듣기

2010-12-21 3 views
1

나는 다음을 수행하려고 :듣기

// 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이를 throw 각 소켓 주소의 "오직 하나 개의 사용 (프로토콜/네트워크 주소/port)는 일반적으로 허용됩니다. "

다른 포트를 사용하고 있기 때문에 서버 응용 프로그램이 여러 포트에서 수신 대기 할 수 있다고 생각합니까?

다른 방법이 있습니까?

+2

는'12000' 포트 무료? – khachik

+5

컴퓨터에 포트 12000을 수신하는 다른 프로그램이없는 것이 확실합니까? 응용 프로그램이 실행되기 전에 모든 청취 포트를 찾기 위해 netstat -a 명령을 실행하십시오. –

답변

3

귀하의 코드는 정상이며 내 상자에서 작동합니다. 방화벽 팝업은 두 청취자가 모두 성공적으로 시작한 후에 만 ​​나타납니다. 누구나 지적하고 있듯이 포트 12000에 애플리케이션이 열려 있습니다.

netstat -a -b을 실행하고 어떤 애플리케이션이 그것을 사용하는지 조회합니다.

예 : 응용 프로그램을 시작할 때

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

앱은 모든 포트 수에 대해 tcp 수신기를 설정할 수 있습니다.

오류가 나타내는 것처럼 특정 포트에서 수신 대기중인 내용이 있습니다.

내 생각 엔 앱이 두 번 실행되고 있거나 제대로 정리하지 않은 것 같습니다. 허용 된 각 연결을 명시 적으로 닫아야합니다. 멈추지 마라.

MSDN에 대한 참조.