0
현재 (학습 목적으로) 클라이언트 - 서버 응용 프로그램에서 작업 중이며 DatagramSocket 시간 초과를 올바르게 설정하고 예외를 처리하는 방법을 완전히 고수했습니다.Datagramsocket setSoTimeout
서버 쪽은 다음과 같습니다
while (true) {
try {
serverSocket = new DatagramSocket(25000);
running = acceptConnection(serverSocket, ready);
serverSocket.setSoTimeout(5000);
while (running) {
receivePacket = new DatagramPacket(receiveData, receiveData.length);
try {
serverSocket.receive(receivePacket);
} catch (SocketTimeoutException e) {
System.out.println("Timed out...");
}
receiveMessage = new String(receivePacket.getData(), 0, receivePacket.getLength());
...
}
...
} catch (IOException e) {
System.err.println("");
} finally {
serverSocket.close();
}
...
}
는 내가 뭘 타임 아웃의 경우에하고 싶은 것은 내가 다른 클라이언트를 처리 할 수 있도록 주 동안 루프로 돌아갈 것입니다. 서버는 한 번에 하나의 클라이언트 만 처리하도록 설계되었습니다.
catch 블록에 running = false;
을 추가하려고했지만 작동하지 않았습니다.
while 루프 전체를 표시하십시오. catch 블록이 어느 레이어에 있는지는 분명하지 않습니다. –
나는 지금 포스트를 편집하고 설명했다. 오해를해서 죄송합니다. – ZeppRock
연결 시간 초과시 유도 된 재귀를 사용하여 메소드를 호출하는 방법 –