서버 응용 프로그램이 수신 대기중인 경우 제대로 작동하는 netty 클라이언트가 있습니다. 그러나 서버 응용 프로그램이 실행 중이 아니므로 포트에서 수신 대기하지 않으면 클라이언트는 여전히 서버가있을 것으로 예상하는 것처럼 실행됩니다.Netty 서버가 포트에서 수신 대기중인 경우 어떻게 내 Netty 클라이언트를 감지 할 수 있습니까?
서버가 수신 대기하지 않는 경우를 처리하고 싶습니다. 그런 경우에도 데이터를 보내지 않고 (관리자에게 연락하도록 사용자에게 알리는 등) 대신 데이터를 보내지 않습니다. 이것은 가능한가?
참고 : 클라이언트가 지정되지 않은 포트 또는 IP에 연결을 시도하면 클라이언트에서 처리 할 수있는 예외가 발생합니다. 내 문제는 서버가 정상적으로 수신 대기해야하는 포트에서 수신 대기 중이 아닐 때 예외가 발생하지 않는다는 것입니다.
[URLConnection.setConnectionTimeout] (https://docs.oracle.com/javase/8/docs/api/java/net/URLConnection.html#setConnectTimeout-int-)을 사용하여 연결을 시도 할 수 있습니다. –
하지만 시간 초과가 끝날 때까지 기다려야합니다. 클라이언트가 어쨌든 끝날 때까지 기다렸다가 결과를 받았는지 확인하고, 그렇지 않은 경우에만 처리 할 수 있습니다. 하지만 시간 초과 나 클라이언트 종료를 기다리는 대신 서버가 무엇인지 알아내는 방법을 선호합니다. 또한 : 어떤 이유로 연결이 느린 경우 어떻게됩니까? 이 경우 시간 제한으로 연결이 중단되지 않습니까? – giro
일종의 '핑 (ping)'입니다. localhost의 경우 포트를 자신에게 바인드하려고 시도 할 수 있지만 (포트가 자유 상태인지 확인) 끔찍한 해킹입니다. 죄송합니다. –