这段udp程序有什么问题,怎么收不到上位机发的udp广播报文????
void UdpTask(void )
{
int hUdp;
fd_set readset,timeset;
struct timeval tv;
int MaxFd = 0;
struct sockaddr_in local_addr;
struct sockaddr_in server_addr;
int i;
socklen_t addrlength = 0;
hUdp =socket(AF_INET, SOCK_DGRAM, 0);
if (hUdp < 0)
{
return;
}
memset(&local_addr,0,sizeof(local_addr));
memset(&server_addr,0,sizeof(server_addr));
memset(&oldaddr,0,sizeof(oldaddr));
local_addr.sin_family = AF_INET;
local_addr.sin_port = htons(1032);
local_addr.sin_addr.s_addr = inet_addr("192.168.6.233");
bind(hUdp, (struct sockaddr *)&local_addr, sizeof(struct sockaddr));
FD_ZERO(&readset);
while(1)
{
tv.tv_sec = 15;//15秒超时判断
tv.tv_usec = 0;
FD_SET(hUdp, &readset);
switch (select(hUdp + 1, &readset, NULL, NULL,&tv))
{
case -1:
break;
case 0: //
break;
default:
if (FD_ISSET(hUdp,&readset))
{
int length = recvfrom(hUdp, buf, BUFSIZE, 0, (struct sockaddr *)&server_addr,&addrlength );
if (length<0)
continue;
}
break;
}
}
}
永远超时!