//**************************** 绑定 if (WSAStartup(MAKEWORD(2, 2), &WSAData) != 0)
{
SendMessage(Application->MainForm->Handle,WM_FINDSERVERERROR,0,0);
return ;
}
if ((sock = socket(AF_INET, SOCK_DGRAM, IPPROTO_UDP)) == INVALID_SOCKET)
{
SendMessage(Application->MainForm->Handle,WM_FINDSERVERERROR,0,0);
return ;
}
memset(&addr_in,'\0',sizeof(addr_in));
addr_in.sin_family = AF_INET;
addr_in.sin_addr.s_addr = htonl(INADDR_ANY);//inet_addr(switchip.c_str()); addr_in.sin_port = htons(3848);//端口绑定 if (bind(sock, (PSOCKADDR)&addr_in, sizeof(addr_in)) == SOCKET_ERROR)
{
Sleep(300);
SendMessage(Application->MainForm->Handle,WM_NOTFINDSWITCH,0,sock);
IsError = true;
return ;
}// 接收 ******************************** FD_ZERO(&myfdset);
FD_SET(sock, &myfdset);
sendto(sock,sendbuf,sendlen,0,(struct sockaddr *)&ser,clilen);
int sendrevt = select(sock + 1, &myfdset, NULL, NULL, NULL);
如果我绑定5000一下的端口,我就能select到数据;
可是如果我绑定一个5000以上的端口(绑定是成功的),我就无法select到数据; 这是为什么啊??
{
SendMessage(Application->MainForm->Handle,WM_FINDSERVERERROR,0,0);
return ;
}
if ((sock = socket(AF_INET, SOCK_DGRAM, IPPROTO_UDP)) == INVALID_SOCKET)
{
SendMessage(Application->MainForm->Handle,WM_FINDSERVERERROR,0,0);
return ;
}
memset(&addr_in,'\0',sizeof(addr_in));
addr_in.sin_family = AF_INET;
addr_in.sin_addr.s_addr = htonl(INADDR_ANY);//inet_addr(switchip.c_str()); addr_in.sin_port = htons(3848);//端口绑定 if (bind(sock, (PSOCKADDR)&addr_in, sizeof(addr_in)) == SOCKET_ERROR)
{
Sleep(300);
SendMessage(Application->MainForm->Handle,WM_NOTFINDSWITCH,0,sock);
IsError = true;
return ;
}// 接收 ******************************** FD_ZERO(&myfdset);
FD_SET(sock, &myfdset);
sendto(sock,sendbuf,sendlen,0,(struct sockaddr *)&ser,clilen);
int sendrevt = select(sock + 1, &myfdset, NULL, NULL, NULL);
如果我绑定5000一下的端口,我就能select到数据;
可是如果我绑定一个5000以上的端口(绑定是成功的),我就无法select到数据; 这是为什么啊??
绑定是成功了,就是灭有办法读到数据
select总是堵塞的;netstat都查看到我的端口绑定成功了;5000端口开始就不能获取到数据,1025-4999的端口,就都能;
发送和接收都是 UDP 的,发送的数据到达了以太层了,我用sniffer都抓到了;
可是我用select 就是得不到数据;我查看了一些资料,
当 addr_in.sin_port = 0; 的时候,系统会给sin_port分配一个1024-5000之间的端口;但是却没有看到有资料说,UDP不能绑定5000以上的端口;真的奇怪啊;
UDP的IP为?