1

我通过本地网络连接到 Internet。我没有公共 IP 地址,例如,当我访问http://www.whatismyip.com/时,它会为我提供路由器的 IP 地址。我正在编写一个使用 UDP 发送和接收数据包的 Java 程序。因此,当我使用该程序将数据包发送到本地网络中的 PC 时(将 PC 的本地 IP 指定为数据包的目标 IP),一切正常。但是,如果我尝试在我的网络之外使用它,它当然不起作用(数据包被传递到路由器,而不是我的 PC)。

那么,如果 X 是我的本地 IP 而 Y 是我的路由器的 IP,我可以指定“X 在 Y 的网络中”作为我的数据包的目标 IP 地址吗?

更新

我无法访问路由器。

4

3 回答 3

2

这是不可能的,因为外部服务器只知道您路由器的外部地址。到实习生的地址是从外面没有办法定义的。要解决此问题,您可以使用路由器的端口转发选项。

来自服务器 A 的包无法找到通往您网络私有部分的路径,因为:
1. 通常私有网络的地址没有路由(根据定义)
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     |
---------------          ----------------------------     ----------------------------------     -------------------
于 2012-09-13T11:51:19.747 回答
1

您的路由器(通常是 DSL 调制解调器)可能使用NAT。所以地址和端口号在路由器中被转换。如果您想从 Internet 将数据包发送到您的 PC(在本地网络中),那么您应该将端口转发规则添加到您的路由器。

如果您无权访问路由器,则无法允许流量。

于 2012-09-13T12:05:39.183 回答
0

我假设您在防火墙或代理后面。除非您更改代理/fireall 上的设置并将您的机器放在DMZ中,否则您试图实现的目标是不可能的。

于 2012-09-13T11:48:49.550 回答