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