重新连接SocketAsyncEventArgs时出错:通常只允许使用每个套接字地址

问题描述 投票:0回答:1

当我尝试重新建立与Socket的连接时,我收到以下错误:

错误:通常只允许使用每个套接字地址(协议/网络地址/端口)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);
    }

有谁知道如何避免这个错误?

c# .net sockets asynchronous
1个回答
© www.soinside.com 2019 - 2024. All rights reserved.