【问题标题】:Understanding kernel assigned local addresses on a udp socket了解内核在 udp 套接字上分配的本地地址
【发布时间】:2009-05-26 12:38:29
【问题描述】:

我正在使用 jstun 库 (hxxp://jstun.javawi.de/) 开发一个 java 应用程序,我需要将我的公共 IP 与内核选择的 IP 进行比较(通配符地址 - hxxp:// java.sun.com/j2se/1.5.0/docs/api/java/net/DatagramSocket.html#DatagramSocket() ) 当我创建一个 udp 套接字时。

我不明白的是,如果我在 natted 网络上的本地 ip 是 192.168.1.x 的形式,为什么我会得到一个 10.x.x.x 之类的 ip?

这两者完全不相关有什么特别的原因吗? 如果我没有在 nat 后面,内核会将套接字绑定到我的公共地址吗?

非常感谢! 不对称

【问题讨论】:

  • 你的链接是 hxxp:// 而不是 http:// 并且可以点击是有原因的吗?
  • 当然是有原因的 :) 我作为新用户不能发链接

标签: java c sockets udp wildcard


【解决方案1】:

对于发送套接字,源 IP 将由主机路由表根据目标 IP 确定;对于接收套接字,目标 IP 就是你得到的。您的对等方看到的“公共”IP 是来自您的数据包上的源地址,它被 NAT 重写为转换为的任何内部地址。

【讨论】:

    【解决方案2】:

    我没有提到一件相当重要的事情:我正在为 android 开发,并在 android 模拟器上运行我的代码,这解释了 10.x.x.x 地址的事情..

    我应该更深入地研究..感谢您的帮助!

    对于那些感兴趣的人:hxxp://developer.android.com/guide/developing/tools/emulator.html#networkaddresses

    【讨论】:

      猜你喜欢
      • 2021-04-22
      • 1970-01-01
      • 2015-05-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-05-06
      • 2013-02-14
      • 1970-01-01
      相关资源
      最近更新 更多