【问题标题】:Bind UDP socket to a specific local endpoint将 UDP 套接字绑定到特定的本地端点
【发布时间】:2014-05-31 03:25:21
【问题描述】:

我这样做:

Socket socket = new Socket(SocketType.Dgram, ProtocolType.Udp);
socket.Bind(new IPEndPoint(new IPAddress(new byte[] {192, 168, 1, 8}), 45678));
socket.BeginConnect(new IPEndPoint(new IPAddress(new byte[] { 65, 52, 108, 52 }), 80), null, null);
socket.Send(new byte[] { 1, 2, 3 });

但套接字实际上并没有绑定到本地 IP 地址 192.168.1.8,只是端口:

UDP    0.0.0.0:45678          *:*

为什么?

【问题讨论】:

    标签: c# .net windows sockets


    【解决方案1】:

    我为套接字使用了错误的重载构造函数:

    Socket socket = new Socket(AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp);
    socket.Bind(new IPEndPoint(new IPAddress(new byte[] {192, 168, 1, 8}), 45678));
    socket.BeginConnect(new IPEndPoint(new IPAddress(new byte[] { 65, 52, 108, 52 }), 80), null, null);
    socket.Send(new byte[] { 1, 2, 3 });
    

    现在它已正确绑定:

     UDP    192.168.1.8:45678      *:*
    

    【讨论】:

      猜你喜欢
      • 2023-02-12
      • 1970-01-01
      • 1970-01-01
      • 2011-03-16
      • 1970-01-01
      • 2019-09-05
      • 2014-05-27
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多