绑定UDP套接字连接到特定的本地端点

问题描述:

我这样做:绑定UDP套接字连接到特定的本地端点

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   *:* 

为什么?

我用错了重载的构造套接字:

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  *:*