socket.sendTo关闭套接字?

时间:2011-08-29 10:23:17

标签: c# sockets udp

我正在尝试创建一个小的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()时,我得到了异常。

2 个答案:

答案 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