Задержка сокета Java - PullRequest
       1

Задержка сокета Java

0 голосов
/ 10 сентября 2011

Я собираюсь читать из сокета в 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 секунды) между печатью «начало чтения» и первой строкой ответа. Но когда я запросил его с Firefox, он ответил быстро (20 мс). В чем проблема? И как я могу решить эту проблему?

Ответы [ 2 ]

0 голосов
/ 10 сентября 2011

Firefox, вероятно, кэширует ответ и поэтому может очень быстро его отобразить. Я предлагаю вам очистить кэш в Firefox и снова запустить его.

Если вы используете доменное имя для вызова, тогда Firefox также будет кэшировать поиск DNS, что может сэкономить время в Firefox, тогда как выполнение вызова в Java может потребовать поиска DNS.

Если вы используете Windows, тогда скачайте Fiddler , который позволит вам контролировать HTTP-соединение и дать вам лучшее представление о том, что происходит.

0 голосов
/ 10 сентября 2011

Я подозреваю, что причина в том, что сервер некоторое время не отправляет разделитель строк, поэтому метод readLine() ждет. Бьюсь об заклад, если вы просто сделаете readByte() это должно быть быстро.

Поскольку Firefox или любой другой браузер не читают построчно, это не влияет на них.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...