Ошибка при переподключении с SocketAsyncEventArgs: обычно разрешено только одно использование каждого адреса сокета - PullRequest
0 голосов
/ 30 ноября 2011

Когда я пытался восстановить соединение с моим сокетом, я получаю следующую ошибку:

Ошибка : обычно допускается только одно использование каждого адреса сокета (протокол / сетевой адрес / порт) SocketErrorCode : System.Net.Sockets.SocketError.AddressAlreadyInUse

Каждый раз, когда я хочу восстановить соединение, я сначала вызываю метод Disconnect (). Но даже если мой сокет отключен, у меня возникает ошибка при попытке восстановить соединение с помощью метода Connect ().

    public SocketError Connect()
    {
        //Open socket connection
        SocketAsyncEventArgs connectArgs = new SocketAsyncEventArgs();

        connectArgs.UserToken = _socket;
        connectArgs.RemoteEndPoint = _hostEndPoint;
        connectArgs.Completed += OnConnect;

        _socket.ConnectAsync(connectArgs); //ERROR : Only one usage of each socket address...

        _autoConnectEvent.WaitOne();

        if (connectArgs.SocketError != SocketError.Success)
        {
            throw new SocketException((Int32)connectArgs.SocketError);
        }

        return connectArgs.SocketError;
    }


    public void Disconnect()
    {
        _socket.Shutdown(SocketShutdown.Both);
        _socket.Disconnect(true);
    }

Кто-нибудь знает, как избежать этой ошибки?

1 Ответ

1 голос
/ 11 декабря 2011
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...