Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sockets/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# TCPIP服务器单连接_C#_Sockets - Fatal编程技术网

C# TCPIP服务器单连接

C# TCPIP服务器单连接,c#,sockets,C#,Sockets,我使用的是c#sockets异步模式 从服务器的角度来看,我只需要在应用程序中提供一个连接。一旦一个连接,然后我想拒绝任何更多的连接请求 此外,服务器仅用于连接到单个客户端。通信完成后,必须重新启动服务器 但从我读到的关于这个话题的内容来看,不可能结束beginaccept 我想了解一下如何避免这种情况。通常,在beginacept异步回调中,您会再次调用beginacept,以便接受另一个连接。但是,如果不想允许另一个连接,可以省略此步骤。因此,连接被及时拒绝,也考虑关闭回调中的侦听套接字。在

我使用的是c#sockets异步模式

从服务器的角度来看,我只需要在应用程序中提供一个连接。一旦一个连接,然后我想拒绝任何更多的连接请求

此外,服务器仅用于连接到单个客户端。通信完成后,必须重新启动服务器

但从我读到的关于这个话题的内容来看,不可能结束beginaccept


我想了解一下如何避免这种情况。

通常,在
beginacept
异步回调中,您会再次调用
beginacept
,以便接受另一个连接。但是,如果不想允许另一个连接,可以省略此步骤。因此,连接被及时拒绝,也考虑关闭回调中的侦听套接字。在这种情况下,即使侦听套接字关闭,接受的
套接字仍将保持打开状态,供您使用

class SocketTest
{
    private Socket m_Listener = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);

    public void Test()
    {
        m_Listener.Bind(new IPEndPoint(IPAddress.Loopback, 8888));
        m_Listener.Listen(16);
        m_Listener.BeginAccept(AcceptCallback, null);
    }

    private void AcceptCallback(IAsyncResult ar)
    {
        Socket s = m_Listener.EndAccept(ar);
        m_Listener.Close();
        /* Use s here. */
    }
}

完美的感谢您帮助我了解异步套接字的范围。