我正在使用Indy组件包。实际上我已经成功通过udp建立p2p网络并且它现在仍在工作,但是使用udp我需要每次都发送一些ping包,否则路由器将删除映射端口列表中的虚拟端口!对于视频或声音或游戏项目而言,通过udp是最好的方法,但对于我的项目,我需要它通过tcp。
我是怎么做的:我有1个服务器机器拥有一个真正的ip,所有客户端在切换到p2p模式之前需要将包发送到服务器,现在服务器知道路由器上的所有客户端虚拟端口(输出端口),如果某个客户端想要将数据发送到另一个客户端,他只需要将数据发送到路由器上的另一个客户端IP和虚拟端口。路由器可以自动映射它。
我在tcp中尝试相同的方式,客户端将数据发送到另一个客户端ip和虚拟端口(在路由器上)但是tcp客户端组件无法接收它!使用udp可以接收
为什么over tcp p2p拓扑不同于udp
或者如何使用idtcpserver组件向服务器机器发送数据以在路由器上创建虚拟端口
答案 0 :(得分:1)
您使用TCP绑定sockets
。 UDP不受同样限制
Difference between TCP and UDP
在您拥有的软件包中(如果您提供了它的名称,您可能会获得更多帮助)应该有一些connection / socket / binding
到客户端连接到您的服务器。这是您需要将数据发送到的连接。