2011-05-16 3 views
4

주어진 시간 Socket soc = new Socket(host,port); 호스트 컴퓨터가 가동 중이고 실행 중일 때 즉시 소켓이 생성됩니다.자바 소켓 생성에 더 많은 시간이 걸린다

그러나 컴퓨터를 끄거나 다시 부팅하면이 줄에 약 40 초가 소요됩니다. soc.setSoTimeout(timeout);을 사용해 보았습니다. 그러나이 줄은 소켓 생성 후 사용됩니다. 그러므로 그것은별로 도움이되지 않습니다.

또한 자바 자체의 버그 인 것 같습니다. http://bugs.sun.com/bugdatabase/view_bug.do;:YfiG?bug_id=5092063

etc/hosts 파일에 시스템 포트 및 호스트 이름을 추가하는 것과 같은이 링크에서 몇 가지 해결 방법을 시도했습니다. 그러나 그것은 효과가 없습니다. 소켓 생성 중에 DNS 해상도로 인한 지연으로 인해 시스템의 응답 시간이 심각하게 영향을받습니다.

도움을 주시면 감사하겠습니다.

덕분에, 시니어

+0

? 실제 인터페이스를 특정 인터페이스로 제한해야합니까? 아니면 느린 것을 경험하고있는 클라이언트 쪽입니까? –

답변

8

사용 connect with timeout 방법 호스트의 IP에 대한 INADDR_ANY (즉, 0)를 지정하면 어떻게됩니까

// create an unconnected socket 
Socket soc = new Socket(); 
soc.setSoTimeout(SO_TIMEOUT); // if you like 

// connect (with timeout) 
soc.connect(new InetSocketAddress(host, port), CONNECT_TIMEOUT); 
+2

명확히하기 위해 setSoTimeout()은 * read * timeout을 설정합니다. 3 개의 매개 변수로 connect() 메소드를 사용하면 * connect * timeout을 제어 할 수 있습니다. 최소한, 디폴트에서 감소시킬 수 있습니다. – EJP

+2

안녕하세요. 보석처럼 작동합니다. 고마워요 !!! – sriram

+0

@EJP : 좋은 설명! (내 코멘트보다 낫다. :)) – dacwe

관련 문제