UDP数据包重新寻址

时间:2012-09-13 11:35:05

标签: java udp ip lan datagram

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

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

更新

我无法访问路由器。

3 个答案:

答案 0 :(得分: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     |
---------------          ----------------------------     ----------------------------------     -------------------

答案 1 :(得分:1)

您的路由器(通常是DSL调制解调器)可以使用NAT。因此地址和端口号在路由器中转换。 如果你想从互联网向你的PC(在本地网络)发送数据包,那么你应该 在路由器中添加port forwarding规则。

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

答案 2 :(得分:0)

我假设您要么在防火墙或代理之后。除非您更改proxy / fireall上的设置并将您的计算机放入DMZ,否则您无法实现的目标。