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

本文关键字:许使用 一次 地址 SocketAsyncEventArgs 错误 套接字 重新连接 | 更新日期: 2023-09-27 18:16:22

当我尝试重新建立到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);
    }

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

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

说明:每个套接字地址(协议/网络地址/端口)通常只允许使用一次

由于@competent_tech

相关文章: