ue4中udp接收消息端代码如下:
bool FShooterUDPReceiver::Start(const int32 ThePort)
{
//Create Socket
FIPv4Endpoint Endpoint(FIPv4Address(0,0,0,0), ThePort);
//BUFFER SIZE
int32 BufferSize = 2 * 1024 * 1024;
ListenSocket = FUdpSocketBuilder(TEXT("ShooterUDPReceiver UdpSocketBuilder"))
.AsNonBlocking()
.AsReusable()
.BoundToEndpoint(Endpoint)
.WithReceiveBufferSize(BufferSize);
FTimespan ThreadWaitTime = FTimespan::FromMilliseconds(100);
UDPReceiver = new FUdpSocketReceiver(ListenSocket, ThreadWaitTime, TEXT("ShooterUDPReceiver UdpSocketReceiver"));
UDPReceiver->OnDataReceived().BindRaw(this, &FShooterUDPReceiver::Recv);
UDPReceiver->Start();
return true;
}
此代码在4.16版本可以正常接收消息,升级到4.19后接收不到消息,也没有任何报错信息
后来猜想会不会是端口被占用,udp监听端口为11111,于是输入命令:
netstat -ano | findstr 11111
然后输入tasklist | findstr 10776
发现ue4的游戏对11111端口监听了两次
这里需要注意,tcp在同一端口监听第二次会失败报错
而udp居然没有报错,但就是接收不到消息
知道了这个把监听端口改了,这个问题就好了