java - UDP 数据包重新寻址

标签 java udp ip lan datagram

我通过本地网络连接到 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/

相关文章:

java - Eclipse Memory Analyzer 启动后没有反应

sockets - 实时操作系统上的UDP非阻塞套接字: sendto() and recvfrom() can return with partial message?

java - 将 MyObject 的页面映射到 MyObjectDTO 的页面

java - 使用通过反射获得的枚举常量

java - 将 ODT 转换为单个 XML 文件

Java 线程不会暂停 I/O 操作

c - 我的 UDP 客户端服务器出了什么问题?

printing - 通过 TCP/IP 使用 USB 打印机

linux - getnameinfo 返回带有 "%<interface>"的数字名称

php - 从 file_get_contents 请求获取 IP