2010-07-30 3 views
10

소켓을 사용하여 여러 인스턴스와 상호 작용하는 간단한 Java 응용 프로그램을 작성했습니다. 첫 번째 인스턴스는 자동으로 서버의 역할을 수행하고 특정 포트에서 수신 대기하며 모든 후속 인스턴스가이 인스턴스에 연결합니다.로컬 호스트의 소켓을 사용하는 Windows 방화벽 팝업을 피하십시오

내가 직면 한 문제는 "들어오는 네트워크 연결 수락"에서 프로그램의 차단을 해제할지 묻는 Windows 방화벽이 나에게 묻는 것입니다. 문제는 다음과 같습니다. 응용 프로그램의 인스턴스가 항상 동일한 컴퓨터에 있으므로 항상 작동하므로 응용 프로그램을 차단 한 상태로 유지하면 문제가되지 않습니다.

제 질문은 : 수신 네트워크 연결을 받아들이지 않겠다는 것을 Windows에 어떻게 알릴 수 있습니까?

+0

명확하게하십시오. Windows 방화벽이 모든 인바운드 네트워크 요청을 자동으로 차단하도록 하시겠습니까? – Caladain

+1

들어오는 네트워크 트래픽에 대해서만 로컬 호스트에서 수신하는 소켓을 원합니다. 다시 말해서 Windows 방화벽이 처음부터 팝업을 표시하는 것을 원하지 않습니다. –

답변

12

ServerSocket 클래스의 three parameter constructor을 사용하여 서버가 수신 대기해야하는 IP 주소도 지정하십시오. 그렇게하면 0.0.0.0의 기본값과 달리 서버가 127.0.0.1에서만 수신하도록 제한 할 수 있습니다. 자세한 내용은 this related SO question을 참조하십시오.

EDIT : 로컬 주소를 얻으려면 InetAddress.getByName (null)을 사용하는 것이 좋습니다.

+2

위대한 작품! 나는 마지막 매개 변수가'InetAddress.getLocalHost()'인 그 생성자를 시도했지만 그것은 분명히 localhost의 네트워크 주소이다. 'InetAddress.getByName (null)'으로 바꾸면 방화벽 팝업이 발생하지 않습니다. –

관련 문제