![](/img/trans.png)
[英]UDP broadcast and multicast messages arrive but recvfrom does not receive anything
[英]recvfrom in UDP not getting anything
我正在尝试在UDP套接字上接收数据,但是我找不到任何接收方法。
我可以通过wireshark看到数据实际上正在到达计算机,但是recvfrom总是超时。
涉及的代码非常简单:
mUDPSocket = socket( AF_INET, SOCK_DGRAM, IPPROTO_UDP );
if( mUDPSocket == INVALID_SOCKET )
return 1;
uint32_t aTimeout = 5000;
const int lResult = setsockopt( mUDPSocket, SOL_SOCKET, SO_RCVTIMEO, ( char * )&aTimeout, sizeof( aTimeout ) );
if( SOCKET_ERROR == lResult )
return 1;
struct sockaddr_in addr = {};
addr.sin_family = AF_INET;
addr.sin_addr.s_addr = htonl( INADDR_ANY ); //also tried with my local ip
addr.sin_port = htons( 48640 );
if( bind( mUDPSocket, ( const sockaddr * )&addr, sizeof( addr ) ) < 0 )
return 1;
后来当尝试接收数据时
if(recvfrom( mUDPSocket, ( char * )aData, aSize, 0, NULL, 0 )<0) //function return -1
std::cout << WSAGetLastError() << std::endl; //10060
我试图做一些基本的事情,所以我想我缺少一些简单的东西。
编辑:数据包每秒发送几次,超时为5秒,所以我应该在实际超时之前收到它
我看到超时的代码的唯一方法是:
数据报在aTimeout
过去之前没有到达( aTimeout
的实际值是aTimeout
?)
数据报未使用IPv4
数据报未发送到计算机上的IP,或未发送到端口48640
数据报被防火墙等阻止。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.