int _BROAD(int tm,int con,char ADR[16],char MSG[16]) //每隔多少毫秒,发X次,地址多少,发送内容;
{
int i = 0; char *msg; msg = MSG;
BOOL fBroadcast = TRUE;
WORD wVersionRequested;
wVersionRequested = MAKEWORD(2, 2); int err;
WSADATA wsaData;
if (ADR == "X")
{
SOCKADDR_IN broad;
bool fb=true;
SOCKET Serv = socket(AF_INET, SOCK_DGRAM, IPPROTO_UDP);//创建接收套字
setsockopt(Serv, SOL_SOCKET, SO_BROADCAST, (CHAR *)&fb, sizeof(BOOL));
broad.sin_family = AF_INET;
broad.sin_addr.s_addr=
//broad.sin_addr.S_un.S_addr = htonl(INADDR_BROADCAST);
broad.sin_port = htons (5333);
bind(Serv, (SOCKADDR *)&broad, sizeof(broad));
SOCKADDR_IN Sevr;
Sevr.sin_family = AF_INET;
Sevr.sin_addr.s_addr = inet_addr("192.168.1.233");
char g[30];
while (i != con)
{
MessageBox(NULL, TEXT("Xx"), TEXT("GC"), 0);
//sendto(bro, msg, lstrlen(MSG), 0, (SOCKADDR *)&broad, sizeof(BOOL));
sendto(Serv, MSG, err, 0, (SOCKADDR *) &broad, sizeof(broad));
//i++;
//MessageBox(NULL, TEXT("发送广播"), TEXT("GC"), 0);
Sleep(tm);
}
closesocket(Serv);
jsq = false;
}
_endthread();
return 0;
}
main ()
{
_beginthread((void(*)(void*))_BROAD(500, 5, "X", "?"), 0, t); 
}

解决方案 »

  1.   

    查看API是否都返回正确了,其次就是发送的数据包格式是否正确,是否被防火墙等拦截
      

  2.   

    1.  if (ADR == "X")   ====》 笔误还是代码中就是这么写的?
    2. bind(Serv, (SOCKADDR *)&broad, sizeof(broad));之前,你都写了啥玩意儿?让别人帮你找BUG,好歹代码也要工整也规范一下吧。
    3. 全文中,我没看到你有发送广播数据,甚至我都怀疑你bind都错了,先找一篇UDP通讯的例子代码,敲一下,编译运行过了,在来搞这个问题。