2010-12-21 220 views
1

我努力做到以下几点:侦听多个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

是'12000`端口免费的,当你启动应用程序? – khachik 2010-12-21 19:11:44

回答

3

你的代码是好的,并在我的包装盒上工作。只有两位听众成功启动后,防火墙才会弹出。 大家都指出,你有一个应用程序在端口12000打开。

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

例子:

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

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

正如错误指出的那样,还有其他的东西在监听特定的端口。

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

参考MSDN