【问题标题】:Sockets C# and different subnets套接字 C# 和不同的子网
【发布时间】:2015-02-05 09:05:41
【问题描述】:

我第一次尝试实现一个套接字应用程序。 当我使用:

IPHostEntry ipHostInfo = Dns.Resolve(Dns.GetHostName());
IPAddress ipAddress = ipHostInfo.AddressList[0];
IPEndPoint localEndPoint = new IPEndPoint(ipAddress, 11000);

localEndPoint IPEndPoint 包含“192.168.56.1”,这是我在 VirtualBox 网络下的地址。 它应该包含我的本地网络 IP(“192.168.1.165”)。

我该如何管理它?

我查看了谷歌,但我能找到答案对不起......

【问题讨论】:

    标签: c# sockets


    【解决方案1】:

    您的虚拟机对外界的网络接口一无所知。您只能使用 NetworkInterface.GetAllNetworkInterfaces() 方法 (see here) 找到您的本地地址。其他任何东西都应该是配置设置。

    【讨论】:

    • 我不是虚拟机。我在安装 VirtualBox 的机器上。它创建了自己的虚拟网络,但我根本没有使用它。
    • 哦,我明白了。好吧,当你有 VirtualBox 时,你有多个本地接口,因此有多个本地地址。您仍然可以使用我在答案中提到的方法。然后你可以获取每个接口的IP属性,看看哪个有默认网关,一般就是你要找的那个接口。请注意,任何一台机器都可以有零个或任意数量的多个传出 IP 地址。
    【解决方案2】:

    使用IPAddress.Any 简单地绑定所有本地接口。大多数情况下,您不需要找出特定的本地 IP。

    请注意,除了一个地址,您将丢弃所有地址。难怪你只得到一个。

    不存在 本地 IP。这是一个集合。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-11-25
      • 2016-07-16
      • 2012-06-26
      • 1970-01-01
      • 2016-07-28
      • 1970-01-01
      • 2016-10-09
      • 1970-01-01
      相关资源
      最近更新 更多