java - 如何在java中获取UDP数据包发送者的本地IP地址

标签 java sockets networking

我已经使用 JMF 为我的兄弟学校项目编写了一个 ip 到 ip 视频聊天应用程序。首先,其中一个用户将 udp 作为聊天请求发送到另一个系统。然后,在视频聊天开始后,第二个系统向第一个系统发送回复。当没有路由器黑白两个系统时,一切都工作正常(例如,两者都在同一局域网上或通过 USB 调制解调器连接到互联网)。否则,当我从 UDP 数据包中检索发送者的 IP 时,它会给出发送者连接到互联网的路由器的 IP,因此当第二个系统回复聊天请求时,第一个系统永远不会收到回复。那么如何获取UDP发送方的本地IP呢?

提前感谢大家。

最佳答案

你说的是 NAT 穿越,这是一个非常困难的问题。维基百科上还有更多内容 https://en.wikipedia.org/wiki/NAT_traversal .

如果只是为了学校项目,我只会让它在本地网络上运行,而不用担心 NAT 穿越。

关于java - 如何在java中获取UDP数据包发送者的本地IP地址,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30910715/

相关文章:

java - 将字符串替换为null

Java - 需要将日期字符串更改为日期,但应用偏移量

Java 服务器套接字故障

Java 集合,无法用新值覆盖旧值

java - 使用递归的斐波那契数

python - 试图发送一个大文件,python 套接字

c# - 获取 HttpRequest 的底层套接字

c# - 如何在 C# 中设置服务类型位?

c - 如何创建在多个接口(interface)上发送/接收 UDP 广播的服务

python - 如何重现 "Connection reset by peer"