2011-09-10 2 views
-2

java 소켓에서 읽으려고합니다. 여기에 내가 갈거야 무슨 :Java 소켓 지연

System.out.println("Start Reading"); 
/* bab is socket connector */ 
/* and readLine is the method below. 
/* public String readLine()throws IOException 
{ 
    String a = inStream.readLine(); 
    return a; 
} 
*/ 
for(int j=0;j<9;j++) 
{ 
    response = bab.readLine(); 
    System.out.println(response); 
} 

나는 인쇄 사이의 지연이 많은 (2-3 초)를 참조하십시오 "읽기 시작"하고 응답의 첫 번째 줄. 하지만 파이어 폭스에서 요청했을 때 신속하게 응답했다 (2  ms). 문제가 무엇입니까? 어떻게이 문제를 해결할 수 있습니까?

+2

'밥'이란 무엇입니까? "파이어 폭스로 요청했을 때"는 무엇을 의미합니까? – Ali

+0

봅은 소켓 커넥터입니다. 정확히 아래에 입력하십시오 bab.connect ("192.168.2.193", 8080); firefox의 – babak6

+0

내가'bab'이 무엇인지 물어 보는 이유는'BufferedReader'를 사용하고 있는지 알고 싶었 기 때문입니다. [Java 자습서] (http://download.oracle.com/javase/tutorial/networking/sockets/readingWriting.html)에서이 코드를 실행하고 시간 지연이 있는지 확인하십시오. 또한 동일한 프로그램 내에서 두 번 연결하면 시간 지연이 있는지 확인하십시오. 나는 지체가 없을 것으로 의심한다. – Ali

답변

0

서버가 일정 시간 동안 회선 구분 기호를 보내지 않아서 readLine() 메서드가 대기하는 것 같습니다. 나는 당신이 단지 readByte()을해야한다면 빨리해야한다고 생각합니다.

Firefox 또는 다른 브라우저가 줄 단위로 읽을 수 없으므로 영향을 미치지 않습니다.

+0

아니요. 또한 readByte를 테스트하지만 작동하지 않습니다. – babak6

-1

Firefox가 응답을 캐시하고 있으므로 매우 빨리 표시 할 수 있습니다. 파이어 폭스에서 캐시를 지우고 다시 해보기를 권 해드립니다.

호출에 도메인 이름을 사용하는 경우 Firefox는 DNS 조회를 캐시하여 Firefox에서 시간을 절약 할 수 있습니다. 반면 Java에서 전화를 걸려면 DNS 조회가 필요할 수 있습니다.

Windows를 사용하는 경우 Fiddler을 다운로드하면 HTTP 연결을 모니터링하고 어떤 현상이 발생했는지 알 수 있습니다.

+0

나는 그것을 보내기 전에 이미 확인해 본다. – babak6