18,356
社区成员
发帖
与我相关
我的任务
分享
WSADATA wsaData; //指向WinSocket信息结构的指针
SOCKET sockListener;
SOCKADDR_IN sin,saUdpServ;
BOOL fBroadcast = TRUE;
char sendBuff[100];
int nSize;
int ncount=0;
if(WSAStartup(MAKEWORD(1,1),&wsaData)!=0)//进行WinSocket的初始化
{
MessageBox(NULL,"Can't initiates windows socket!Program stop.","",MB_OK);//初始化失败
}
sockListener=socket(PF_INET,SOCK_DGRAM,0);
setsockopt(sockListener,SOL_SOCKET,SO_BROADCAST,
(CHAR *)&fBroadcast,sizeof(BOOL));
int nSendBuf=0;//设置为0
setsockopt(sockListener,SOL_SOCKET,SO_SNDBUF,(const char*)&nSendBuf,sizeof(nSendBuf));
sin.sin_family = AF_INET;
sin.sin_port = htons(0);
sin.sin_addr.s_addr = htonl(INADDR_ANY);
if(bind(sockListener,(SOCKADDR *)&sin,sizeof(sin))!=0)
{
MessageBox(NULL,"Can't bind socket to local port!Program stop.","",MB_OK);//初始化失败
}
saUdpServ.sin_family = AF_INET;
saUdpServ.sin_addr.s_addr = htonl(INADDR_BROADCAST);
saUdpServ.sin_port = htons(7001);//发送用的端口,可以根据需要更改
nSize = sizeof(SOCKADDR_IN);
strcpy(sendBuff,"This is a Test");
while(!csVar.bStop)
{ //下面的struct SendCopyScreenStruct 大小为(512+2)*4+8个字节
sendto(sockListener,(char *)&csVar.sendObject[nItem],
sizeof(struct SendCopyScreenStruct),0,(SOCKADDR *)&saUdpServ,
sizeof( SOCKADDR_IN ));
ReleaseSemaphore(csVar.hEmptySendBuffMutex,1,NULL); //空发送缓冲数+1
nItem++;
if(nItem == MAXCOUNT_BUFF)nItem = 0;
}