TcpListener在c#中的正确使用

本文关键字:TcpListener | 更新日期: 2023-09-27 18:02:37

我正在试验使用该系统的客户机-服务器应用程序。. Net命名空间。我目前使用以下TcpListener代码来侦听传入的连接:

TcpListener listener = new TcpListener(IPAddress.Any, 62126);
List<Connection> ClientConnections = new List<Connection>();
while (true)
{
    listener.Start();
    while (true)
    {
        if (listener.Pending())
        {
            ClientConnections.Add(new Connection(listener.AcceptTcpClient()));
            break;
        }
    }
}

(其中Connection是一个类,它通过public Connection(TcpClient client) { ... }接受TcpClient,并在一个单独的线程上维护连接)

我是否需要在每次接受传入连接时调用listener.Start() ?

TcpListener在c#中的正确使用

如果没有挂起的连接请求,您正忙于等待。这是不必要的。只要删除那个if。确保你明白为什么它是不必要的。

我不明白为什么有两个嵌套循环。你只需要一个。只调用Start一次

我看得出来你没有读过文档。很危险的。你可以自己回答这些问题。

No。Start只需要调用一次。删除外部while循环