我在特定端口上发送一些字节并侦听同一端口:
udpBroadcast = new System.Net.Sockets.UdpClient(2333); // local binding
udpBroadcast.Client.SetSocketOption(SocketOptionLevel.Socket,
SocketOptionName.ReuseAddress, true);
udpBroadcast.Connect("255.255.255.255", 2333);
udpBroadcast.Send(sendBytes, sendBytes.Length);
udpBroadcast.Close();
udpResponse = new System.Net.Sockets.UdpClient(2333); // local binding
udpResponse.Client.SetSocketOption(SocketOptionLevel.Socket,
SocketOptionName.ReuseAddress, true);
BeginAsyncReceive();
问题是我需要重新广播(另一端发送给我更新)但是我在udpBroadcast上有一个ObjectDisposedException
。
我理解Close()
处理它但后来我发现无法打开它。
试图重新创建(新)udpBroadcast并没有帮助。
谢谢
约翰
答案 0 :(得分:0)
您可能需要刷新数据以及在关闭并尝试重新打开之前发送数据。这在过去曾引起我的问题。
答案 1 :(得分:0)
最终我使用了这种模式:
using (var socket = new Socket(AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp))
{
var endPoint = new IPEndPoint(ip, port);
socket.Bind(endPoint);
using (var client = new UdpClient() {Client = socket})
{
var destinationIP = IPAddress.Broadcast;
client.Connect(destinationIP, port);
client.Send(bytes, bytes.Length);
}
}