Socket.send закрывает ли сокет? - PullRequest
1 голос
/ 29 августа 2011

Я пытаюсь создать небольшой сервер и клиент 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 ]

1 голос
/ 29 августа 2011

Возможно, вызов Close () удаляет объект, и вы пытаетесь использовать его во втором или третьем вызове

см. Эту ссылку для более подробной информации

ObjectDisposeException при попытке отправить через вновь открытый сокет

1 голос
/ 29 августа 2011

ошибка должна быть где-то еще, потому что можно 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();
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...