繁体   English   中英

UDP中的recvfrom没有得到任何东西

[英]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秒,所以我应该在实际超时之前收到它

我已经附上了wireshark捕获的屏幕 在此处输入图片说明

我看到超时的代码的唯一方法是:

  • 数据报在aTimeout过去之前没有到达( aTimeout的实际值是aTimeout ?)

  • 数据报未使用IPv4

  • 数据报未发送到计算机上的IP,或未发送到端口48640

  • 数据报被防火墙等阻止。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM