我正在使用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()
?
答案 0 :(得分:0)
如果没有待处理的连接请求,您就会忙着等待。这不是必需的。只需删除if
即可。确保你理解为什么没有必要。
我不明白为什么有两个嵌套循环。你只需要一个。只需拨打Start
一次。
我可以说你还没有阅读文档。相当危险。你有能力自己回答这些问题。
答案 1 :(得分:0)
没有。开始只需要调用一次。删除外部while循环