侦听多个TCP端口

时间:2010-12-21 19:10:27

标签: c# tcp

我正在尝试执行以下操作:

// Create IPv4 TCP/IP sockets. 
TcpListener listener = new TcpListener(IPAddress.Any, 11000);
TcpListener listener2 = new TcpListener(IPAddress.Any, 12000);

// Listen for incoming connections.
listener.Start();
listener2.Start();

第二次调用TCPListener.Start()会抛出一个socketexception,说“通常只允许使用每个套接字地址(协议/网络地址/端口)”。

由于我使用的是其他端口,我认为服务器应用可以在多个端口上监听?

还有其他办法吗?

2 个答案:

答案 0 :(得分:3)

您的代码正常,可在我的包装盒上使用。只有在两个听众成功启动后才会弹出防火墙。 正如每个人都指出的那样,你在12000端口打开了一个应用程序。

执行netstat -a -b并查找正在使用它的应用程序。

示例:

  TCP    [::]:12000             [::]:0                 LISTENING
 [services.exe]

答案 1 :(得分:2)

应用可以在任意数量的端口上设置tcp侦听器。

如错误所示,在该特定端口上还有其他内容。

我的猜测是你的应用程序运行了两次,或者你没有正确清理它。请注意,您必须单独显式关闭每个接受的连接。停止不会为你做这件事。

参考MSDN