请问UDP收不到数据包的有关问题
请教UDP收不到数据包的问题?
用socket写了个收发数据的程序,UDP协议,服务器端程序放到服务器后,在自己的电脑里发送并接收数据,客户端发送的信息在服务器那边可以收到,就是服务器端的数据在客户端收不到,用winshark来抓不到包,现在一头雾水,完全不知道是什么原因,在两台PC连接测试的时候程序可以完成工作,放到服务器就不行了。但是我的同事的电脑可以收到服务器的包,太奇怪了。
请各位高手赐教一下,谢谢
下面是接收的代码
------解决方案--------------------
客户端:
addrSrv.sin_addr.S_un.S_addr = htonl(INADDR_ANY); //这里应该是你自己服务器端的IP
而且客户端要主动先去连接服务器端
------解决方案--------------------
在两台PC连接测试的时候程序可以完成工作,放到服务器就不行了。但是我的同事的电脑可以收到服务器的包
-------------
这样的话基本就不是程序的问题了,检查下网络配置的问题吧
用socket写了个收发数据的程序,UDP协议,服务器端程序放到服务器后,在自己的电脑里发送并接收数据,客户端发送的信息在服务器那边可以收到,就是服务器端的数据在客户端收不到,用winshark来抓不到包,现在一头雾水,完全不知道是什么原因,在两台PC连接测试的时候程序可以完成工作,放到服务器就不行了。但是我的同事的电脑可以收到服务器的包,太奇怪了。
请各位高手赐教一下,谢谢
下面是接收的代码
- C/C++ code
WORD wVersionRequested; WSADATA wsaData; int err; wVersionRequested = MAKEWORD(1, 1); DWORD dwID=GetCurrentThreadId(); err = WSAStartup(wVersionRequested, &wsaData); if (err != 0) { printf("WSAStartup failed with error: %d\n", err); return 0; } if (LOBYTE(wsaData.wVersion) != 1 || HIBYTE(wsaData.wVersion) != 1) { printf("Could not find a usable version of Winsock.dll\n"); WSACleanup(); return 0; } else printf("The Winsock 1.1 dll was found okay, and thread is %x\n", dwID); SOCKET sockSrv = socket(AF_INET, SOCK_DGRAM, 0); SOCKADDR_IN addrSrv; addrSrv.sin_addr.S_un.S_addr = htonl(INADDR_ANY); addrSrv.sin_family = AF_INET; addrSrv.sin_port = htons(6120); bind(sockSrv, (SOCKADDR*)&addrSrv, sizeof(SOCKADDR)); SOCKADDR_IN addrClient; int len = sizeof(SOCKADDR); char recvBuf[PACKAGE_LEN]; //char tempBuf[recvLen]; while(!CLOSE_PROC){ if(recvfrom(sockSrv, recvBuf, PACKAGE_LEN, 0, (SOCKADDR*)&addrClient, &len) != SOCKET_ERROR){ modify_reqeust((SOCKADDR*)&addrClient, recvBuf, &sockSrv); SetEvent(recvEvent); } Sleep(0); } closesocket(sockSrv); WSACleanup();
------解决方案--------------------
客户端:
addrSrv.sin_addr.S_un.S_addr = htonl(INADDR_ANY); //这里应该是你自己服务器端的IP
而且客户端要主动先去连接服务器端
------解决方案--------------------
在两台PC连接测试的时候程序可以完成工作,放到服务器就不行了。但是我的同事的电脑可以收到服务器的包
-------------
这样的话基本就不是程序的问题了,检查下网络配置的问题吧