2012-09-06 2 views
1

ServerSocket으로 들어오는 연결을 확인하는 방법이있어 누군가가 연결되기를 기다릴 때 내 서버가 멈추지 않습니다.ServerSocket으로 들어오는 연결 확인하기

내가 들어오는 요청의 서버 모양을 만들기 위해 무한while루프를 사용하여 ... 간단하게

try { 
if (server.thereisarequest()) { 
Socket socket = server.accept(); 
} 
} 
+0

왜? 별도의 스레드에서 정상적인 accept 루프를 실행하십시오. – EJP

답변

1

정말 좋습니까? 코드가 표시되면 하나의 스레드 만 대기합니다. 서버가 멈추지 않도록 허용 된 연결을 처리하는 다른 스레드를 실행하십시오. 자바 비 블로킹 비동기 I/O (nio 및 nio2)를 사용할 수도 있지만, 배경에는 어쨌든 스레드가 있습니다.

1

같은 뭔가가 필요 ... 대부분의 서버가 작동하는 방법 이잖아 ..

while (true) { 

incoming = s.accept(); // incoming is of type Socket.        

} 
+0

그리고 프로그램이 앞으로 진행되거나 요청이 중지되고 대기하게됩니까? – Qualphey

+1

요청을 기다리는 중 ..... ..... 이제는 서버가 다른 클라이언트를 기다리는 동안 s.accept()에서 얻은 클라이언트 객체를 다른 별도의 스레드로 옮겨야합니다. ' –

+0

요청을 기다리는 중,하지만 서버가 여전히 작동합니까? 들어오는 요청을 기다리는 동안 여전히 모든 프레임에 텍스트를 인쇄하겠습니까? – Qualphey

0

새 스레드를 만들어 연결을 허용 할 수 있습니다.

  • 프로세스 새 스레드
  • 의 소켓 큐 (ConcurrentLinkedQueue)에 소켓을 넣고 당신 메인 스레드에서 큐 확인 :

    은 그럼 당신은 2 개 선택이있다.

관련 문제