在C#中正确使用TcpListener

时间:2014-05-10 13:49:54

标签: c# tcp tcplistener

我正在使用C#中的System.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()

2 个答案:

答案 0 :(得分:0)

如果没有待处理的连接请求,您就会忙着等待。这不是必需的。只需删除if即可。确保你理解为什么没有必要。

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

我可以说你还没有阅读文档。相当危险。你有能力自己回答这些问题。

答案 1 :(得分:0)

没有。开始只需要调用一次。删除外部while循环