测试我的 Java UDP 点对点程序时出现问题
Problems testing my Java UDP peer to peer program
我已经使用名为 "Packet Tester" 的程序在本地测试了该程序
我为我的手机下载了 UDP Receiver/Sender。在我的计算机上使用 java 程序,我能够将数据包发送到移动服务器并且运行良好。我只是输入了手机的 IP 地址和它正在侦听的端口号。
当我尝试 运行 我的 UDP 点对点连接到我的笔记本电脑和计算机时,他们根本无法聊天。
有谁知道这是否与正在使用同一路由器这一事实有关,或者不是。不应该,因为我的手机正在接收来自笔记本电脑和电脑的消息。 ]
Java 应用程序可以在本地检索 UDP 数据包,但不能从笔记本电脑或移动设备检索。移动设备可以从笔记本电脑和移动设备检索 udp 数据包。测试显示令人困惑的结果,这让我陷入困境。
我很感激你对此的看法。
谢谢。
问题可能是由于路由器完成了网络地址转换。
我相信您正在向正确的 IP 地址发送数据包,但端口不正确。您可能将数据包发送到的端口是机器的本地端口。
您需要将数据包发送到路由器分配的端口。
当数据包从计算机A通过路由器到达计算机B时,路由器将计算机的本地端口映射到某个随机端口。
所以,如果计算机B需要向计算机A发送数据包,那么计算机B需要将其发送到路由器指定的IP:port。然后路由器会转发到电脑A本地IP:port
我建议首先了解当 UDP 数据包通过网络内部或外部的路由器传输时如何创建此映射。了解网络地址转换、UDP 打洞。
这些来源可能有帮助:
我已经使用名为 "Packet Tester" 的程序在本地测试了该程序
我为我的手机下载了 UDP Receiver/Sender。在我的计算机上使用 java 程序,我能够将数据包发送到移动服务器并且运行良好。我只是输入了手机的 IP 地址和它正在侦听的端口号。
当我尝试 运行 我的 UDP 点对点连接到我的笔记本电脑和计算机时,他们根本无法聊天。
有谁知道这是否与正在使用同一路由器这一事实有关,或者不是。不应该,因为我的手机正在接收来自笔记本电脑和电脑的消息。 ]
Java 应用程序可以在本地检索 UDP 数据包,但不能从笔记本电脑或移动设备检索。移动设备可以从笔记本电脑和移动设备检索 udp 数据包。测试显示令人困惑的结果,这让我陷入困境。
我很感激你对此的看法。
谢谢。
问题可能是由于路由器完成了网络地址转换。
我相信您正在向正确的 IP 地址发送数据包,但端口不正确。您可能将数据包发送到的端口是机器的本地端口。 您需要将数据包发送到路由器分配的端口。
当数据包从计算机A通过路由器到达计算机B时,路由器将计算机的本地端口映射到某个随机端口。
所以,如果计算机B需要向计算机A发送数据包,那么计算机B需要将其发送到路由器指定的IP:port。然后路由器会转发到电脑A本地IP:port
我建议首先了解当 UDP 数据包通过网络内部或外部的路由器传输时如何创建此映射。了解网络地址转换、UDP 打洞。
这些来源可能有帮助: