我可以为NAT后面的客户端使用UDP服务器上的其他接收/发送端口吗?

问题描述 投票:0回答:1

我编写了UDP服务器,该服务器为NAT之后的客户端提供服务。客户端将请求发送到公共IP和一些预定义的端口。服务器接收消息,创建(从池中获取)线程并将消息传递给线程(处理程序)。

问题:我可以使用新的套接字(不同的端口)发送响应,还是应该使用接收请求的相同端口(套接字)?

udp nat
1个回答
0
投票

您需要将请求从接收到的相同IP地址发送到服务器上的端口,并将请求发送到从中获取数据的客户端上相同的公共可见IP端口。否则,NAT将无法将数据包中的IP和端口转换回NAT后面的原始客户端。

您可以通过使用绑定到服务器IP和端口且未连接到特定客户端的单个服务器套接字来实现此要求。然后,以recvfrom返回的地址作为sendto中的目标,使用recvfrom接收数据并使用sendto发送。

© www.soinside.com 2019 - 2024. All rights reserved.