我通过本地网络连接到互联网。我没有公共IP地址,例如,当我转到http://www.whatismyip.com/时,它会给我路由器的IP地址。 我正在编写一个使用UDP发送和接收数据包的Java程序。因此,当我使用此程序将数据包发送到我的本地网络中的PC(指定我的PC的本地IP作为数据包的目标IP)时,一切正常。但是,如果我尝试将其用于我的网络,当然它不起作用(数据包被传送到路由器,而不是我的PC)。
那么,如果X是我的本地IP而Y是我路由器的IP,我可以指定“Y的网络中的X”作为我的数据包的目标IP地址吗?
我无法访问路由器。
答案 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,否则您无法实现的目标。