2017-02-01 4 views
0

초당 수신 연결 수를 계산하고 싶습니다. 그 말은, 나는이 같은 루프 만들었 : 나는 내가 INT를 원하기 때문에 만 계산하기 위해 어떻게해야합니까 무엇언제 serversocket.accept()가 예외를 throw합니까? [java]

new Timer().scheduleAtFixedRate(new TimerTask() { 
      @Override 
      public void run() { 
       System.out.println("TimerTask: " + incominConnections + " incoming Connections while the last second."); 
       incominConnections = 0; 
      } 
     }, 0, 1000); 

: 전에

int incomingConnections; 
while(true) { 
    try { 
    Socket socket = serverSocket.accept(); 
    incomingConnections++; 
    } catch (Exception ex) { 
    } 

를,이 같은 TimerTask를 시작 그것은 연결을 받아 들일 때마다, 루프를 반복 할 때마다가 아니라. 도움이 필요하십니까? Thx

+1

TimerTask로하려는 작업을 이해하지 못합니다. 그건 제가 말할 수있는 한 당신의 질문과 관련이 없습니다. 또한 아무 것도하지 않습니다. 왜 그것을 포함 시켰습니까? –

+0

'루프를 반복 할 때마다'와 '성공적으로 연결을 수락 할 때마다'게시 한 코드에서 동일한 내용입니다. 예외가 발생하면 카운터가 증가하지 않습니다. 네가 묻고있는 것이 불분명하다. – EJP

답변

0

코드가 이미 원하는대로 작동합니다.

연결이이 소켓에 대한 대기 해, 그것을 받아들

ServerSocket.accept에 대한 Java 문서()

는 것을 말한다. 메서드는 연결될 때까지 차단됩니다.

그래서 accept 블록을 호출하기 때문에 연결이 성공적으로 이루어지면 카운터가 증가합니다.

accept() 호출에서 예외가 발생하면 카운터를 증가시키는 코드를 실행하지 않고 catch 블록을 입력합니다.

관련 문제