测试我的Java UDP对等程序时出现问题

时间:2015-01-02 07:49:01

标签: java sockets udp chat livechat

我使用名为" Packet Tester"的程序在本地测试了该程序。 Receives the packet

我为手机下载了UDP Receiver / Sender。使用我的计算机上的java程序,我能够将数据包发送到移动服务器,它运行良好。我只输入了移动设备的IP地址和它正在侦听的端口号。

当我尝试在我的笔记本电脑和计算机上运行我的UDP对等端时,他们根本无法聊天。

有没有人知道是否与使用相同路由器或不使用的事实有关。它不应该是因为我的手机正在从笔记本电脑和电脑接收消息。 ]

Java应用程序可以在本地检索UDP数据包,但不能从笔记本电脑或移动设备检索。移动设备可以从笔记本电脑和移动设备中检索udp数据包。测试结果令人困惑,导致我陷入困境。

我很感激你对此的看法。

谢谢。

1 个答案:

答案 0 :(得分:1)

问题可能是由于路由器完成了网络地址转换

我相信您正在将数据包发送到正确的IP地址,但端口不正确。您可能发送数据包的端口是计算机的本地端口。 您需要将数据包发送到路由器分配的端口。

当数据包通过路由器从计算机A进入计算机B时,路由器将计算机的本地端口映射到某个随机端口。

因此,如果计算机B需要向计算机A发送数据包,则计算机B需要将其发送到路由器分配的IP:端口。然后,路由器将其转发到计算机A的本地IP:端口。

我建议首先了解当UDP数据包通过网络内部或网络外部的路由器时如何创建此映射。阅读网络地址转换,UDP打孔。

这些来源可能有所帮助:

Network Address Translation

UDP Hole Punching

RFC 4787 NAT Behavioral Requirements UDP

RFC 5128 P2P across NAT