识别UDP发送器端口'C ++ SOCKET'时出现问题

时间:2018-09-02 15:04:06

标签: c++ sockets networking proxy udp

抱歉,这可能是重复的,但是经过2个小时的研究和测试。
我没有发现任何有用的方法来解决我的问题或理解得很好。 所以我决定将其发布。


客户端绑定到端口2000(无端口转发)
服务器绑定到端口50000(端口转发)

当客户端将数据包发送到服务器时, 服务器剂量将发送方端口视为2000,但将其作为随机端口“ example 57788”(通常为40000-60000)


如果服务器将数据包回复到端口“ 57788”,则客户端会很好地收到它。

但是,如果服务器将数据包发送到端口“ 2000”,则客户端将不会接收到它。
(仅当客户端端口也在路由器上转发了端口时,才接收。)



我也尝试将服务器绑定在端口50000上,
并自行向其发送数据包(IP'85.xx.xx.xx',端口'50000')
巫婆然后服务器应该从相同的IP和端口接收数据包,但是再次。它从随机端口而不是50000接收。

注意:使用公共IP '85 .xx.xx.xx'返回的端口是随机的。
注意:使用本地IP'192.168.xx.xx'返回的端口为50000。





我正在尝试与udp助理建立代理。
在udp关联请求下,客户端必须告诉代理它要将数据报发送到的UDP IP“ 85.xx.xx.xx”和端口“ 2000”。 (提供服务器->代理-> ip:port)
但是由于这个问题,代理服务器应该将数据报发送到“随机端口”而不是端口2000。女巫不好(出于安全目的。)。



谁能解释我为什么会这样?
即使在必须回复57788的情况下,我们也可以识别出原始端口“ 2000”吗?
如果有什么问题请纠正我。


谢谢。

0 个答案:

没有答案