Java UDP数据包重新格式化

Java UDP数据包重新格式化,java,udp,ip,lan,datagram,Java,Udp,Ip,Lan,Datagram,我通过本地网络连接到互联网。我没有公共IP地址,例如,当我转到它时,它会给我路由器的IP地址。 我正在编写一个Java程序,它使用UDP发送和接收数据包。因此,当我使用此程序在本地网络中将数据包发送到我的电脑时(将我电脑的本地IP指定为数据包的目标IP),一切正常。但是,如果我试图在网络之外使用它,它当然不起作用(数据包被传送到路由器,而不是我的电脑) 所以,如果X是我的本地IP,Y是我路由器的IP,我可以指定“X在Y的网络中”作为我的数据包的目标IP地址吗 更新 我无法访问路由器。我假定您在防

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

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

更新
我无法访问路由器。

我假定您在防火墙或代理服务器后面。除非您更改proxy/fireall上的设置并将您的机器投入运行,否则您试图实现的目标是不可能的

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

来自服务器A的包无法找到到您网络的专用部分的路径,因为:
1.通常情况下,专用网的地址不会路由(根据定义)
2.路由器“互联网”不知道包裹应该发送到哪里

---------------          ----------------------------     ---------------------------------      --------------------
| 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     |
---------------          ----------------------------     ----------------------------------     -------------------
您的路由器(通常是DSL调制解调器)可能会使用。所以地址和端口号在路由器中被转换。 如果您想从internet向您的PC(在本地网络中)发送数据包,那么您应该 向路由器添加规则


如果您没有访问路由器的权限,那么就不可能允许流量。

Hm,很抱歉问了一个愚蠢的问题,“ping”命令是如何工作的?我读过,它使用ICMP,并且它可以重定向数据包。。。我不能用ICMP从外部互联网接收数据包吗?简单地说。。。它来自协议栈中的另一层。。。处理方式不同。看这里@splash也许你是图标设计之王-我是ascii艺术的执行者:-Drooter的设计只允许它配置为允许的流量。如果不重新配置,就无法绕过此问题,否则它们将不安全。如果您无法访问路由器,我认为最有可能的情况是使用此技术,但这需要UDP连接的两个参与者采取特殊措施。有人可能建议建议将推荐的路由移动到IPv6,以便内部网络上的每个设备网络具有唯一的全局IP地址。