我正在尝试创建一个小的udp服务器和客户端。我现在正在编写注销功能,但由于某种原因,我得到了一个ObjectDisposedException。
Data msgToSend = new Data ();
msgToSend.cmdCommand = Command.Logout;
msgToSend.strName = strName;
msgToSend.strMessage = null;
byte[] b = msgToSend.ToByte ();
clientSocket.SendTo(b, 0, b.Length, SocketFlags.None, epServer);
clientSocket.Close();
服务器收到消息。然后做它应该做的,但是当我到达clientSocket.Close()时,我得到了异常。
答案 0 :(得分:1)
错误必须在其他地方,因为可以在Close
之后调用SendTo
,这里是来自MSDN的代码段:http://msdn.microsoft.com/en-us/library/beez6ewa.aspx
public static void SendTo4()
{
IPHostEntry hostEntry = Dns.GetHostEntry(Dns.GetHostName());
IPEndPoint endPoint = new IPEndPoint(hostEntry.AddressList[0], 11000);
Socket s = new Socket(endPoint.Address.AddressFamily,
SocketType.Dgram,
ProtocolType.Udp);
byte[] msg = Encoding.ASCII.GetBytes("This is a test");
Console.WriteLine("Sending data.");
// This call blocks.
s.SendTo(msg, 0, msg.Length, SocketFlags.None, endPoint);
s.Close();
}
答案 1 :(得分:1)
也许Close()调用处理对象,并且您尝试在第二次或第三次调用中使用它
请参阅此链接了解更多详情
ObjectDisposeException when trying to send thru a reopened socket