我通过本地网络连接到 Internet。我没有公共(public) IP 地址,例如,当我转到 http://www.whatismyip.com/ 时它给了我路由器的 IP 地址。 我正在编写一个使用 UDP 发送和接收数据包的 Java 程序。因此,当我使用此程序将数据包发送到本地网络中的 PC 时(将我 PC 的本地 IP 指定为数据包的目标 IP),一切正常。但是,如果我尝试在我的网络之外使用它,它当然不起作用(数据包被传送到路由器,而不是我的 PC)。
那么,如果 X 是我的本地 IP,Y 是我的路由器 IP,我可以指定“Y 网络中的 X”作为我的数据包的目标 IP 地址吗?
更新
我无法访问路由器。
最佳答案
这是不可能的,因为外部服务器只知道你路由器的外部地址。实习生地址是从外部无法定义的。要解决此问题,您可以使用路由器的端口转发选项。
来自服务器 A 的包找不到通往您网络私有(private)部分的路径,因为:
1. 通常不路由私有(private)网络的地址(根据定义)
2. 路由器'Internet'不知道应该将包发送到哪里
--------------- ---------------------------- --------------------------------- --------------------
| SERVER A | | Router Internet | | Your router | | Your machine |
| addr net 1 |---------| addr net 1 addr net 2 |-----| addr net 2 addr priv. net |-----| priv. addr |
--------------- ---------------------------- ---------------------------------- -------------------
关于java - UDP 数据包重新寻址,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12405325/