2010-01-13 2 views

답변

4

너무 많으면 accept()를 사용하지 마십시오.

+2

을 알립니다. –

1

당신은 당신의 이벤트 핸들러에 셀 수

class Server() 
{ 
    private AutoResetEvent connectionWaitHandle = new AutoResetEvent(false);

public void Start() { TcpListener listener = new TcpListener(IPAddress.Any, 5555); listener.Start();

while(true) 
{ 
    IAsyncResult result = tcpListener.BeginAcceptTcpClient(HandleAsyncConnection, tcpListener); 
    connectionWaitHandle.WaitOne(); //Wait until a client has begun handling an event 
} 

}

개인 무효 HandleAsyncConnection (IAsyncResult를 결과) { TcpListener 리스너 = (TcpListener) result.AsyncState; TcpClient 클라이언트 = listener.EndAcceptTcpClient (결과); connectionWaitHandle.Set(); // 당신은 동의 싶어하고 대신, 서버는 다음 분리 가득 차 있음을 설명하는 패킷을 보낼 수 있습니다이 연결이 지금

//... Use your TcpClient here 

client.Close(); 

를 처리하는 메인 쓰레드} }

관련 문제