【问题标题】:UDP networking with multiple network具有多个网络的 UDP 网络
【发布时间】:2013-10-27 21:27:02
【问题描述】:

我目前正在我的机器上开发一个网络应用程序,它有 2 个网络接口,设置如下 -

我想使用 IP 192.168.1.2 的第一个配置发送 UDP 消息。

using (var udpClient = new UdpClient(5556))
{
    udpClient.Connect(IPAddress.Parse("192.168.1.2"), 5556);
    // DO STUFF
}

当我尝试这个时,我得到以下错误 -

无法建立连接,因为目标机器主动 拒绝了

奇怪的是,当我禁用我的其他网络时,它可以正常工作,但是有 2 个连接(LAN 和 WiFi)它不再工作了...... 我猜它在错误的适配器上发送? 这是因为我的默认网关是相同的还是我做错了什么? 我是开发基于网络的应用程序的新手...

【问题讨论】:

  • 顺便说一句,您不需要调用 Connect with UDP - 所做的只是每次调用 send 时都不需要传递要发送到的端点。
  • 也可以使用环回地址:127.0.0.1,并连接接口。

标签: c# network-programming udp


【解决方案1】:

您必须使用网卡 IP 指定 IPEndPoint,如下所示:

var endpoint = new IPEndPoint(IPAddress.Parse("192.168.1.2"), portNum);
UdpClient client = new UdpClient(endpoint);

【讨论】:

    【解决方案2】:

    你没有告诉UdpClient使用哪个IP。

    UdpClient 有一个 constructor 可以接受 IPEndPoint

    const string ip = "192.168.1.2";
    const int port = 5556;
    
    var listenEndpoint = new IPEndPoint(IPAddress.Parse(ip), port);
    var udpClient = new UdpClient(listenEndpoint);
    

    【讨论】:

      【解决方案3】:

      我的 C# 不太好,但我想我理解这个问题。您将 udpClient 绑定到端口 5556,但没有指定 IP 地址。操作系统将为您选择 IP 地址。我想它可能是 192.168.1.2 或 192.168.1.5,你不知道是哪一个。 然后使用相同的 udpClient 尝试连接到在 192.168.1.2 端口 5556 上侦听的远程主机。可能没有人在那里侦听。这就是您收到错误的原因。

      我会做以下事情(对不起我糟糕的 C# 技能):

      • 在一个线程或程序/进程中有两个 udpClient:

        var udpClient1 = new UdpClient("192.168.1.2", 5556);
        

      这个会监听 IP 地址 192.168.1.2,端口 5556。

      • 在第二个线程或程序/进程中:

        var udpClient2 = new UdpClient(); //doesn't matter which (IP, port) the OS will bind it to.
        udpClient2.Connect(IPAddress.Parse("192.168.1.2"), 5556); //connect to peer/server listening in (IP=192.168.1.2, port=5556)
        

      您也可以在同一个线程中同时处理 udpClient1 和 udpClient2。 重要的是,如果您连接到(IP、端口),则必须有一些应用程序/进程在那里侦听。否则,远程主机将发送一条 ICMP 消息,指示无法传递数据报。连接被拒绝。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2022-12-16
        • 2021-11-11
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-10-03
        相关资源
        最近更新 更多