![]() |
|
Модераторы: LSD, AntonSaburov |
![]()
|
|
| Vitek1234 |
|
||||
![]() Новичок Профиль Группа: Участник Сообщений: 19 Регистрация: 11.2.2008 Репутация: нет Всего: нет |
У меня есть простенький сервер и клиент
Сервер пишет
Клиент читает
Я не понимаю почему клиент читает приблизительно за 203мс. Что за задержка и как исправить. Если только одна запись и чтение в сокет то задержка <1ms??? Ping Reply from 192.168.4.3: bytes=100 time<1ms TTL=128 Reply from 192.168.4.3: bytes=100 time<1ms TTL=128 Reply from 192.168.4.3: bytes=100 time<1ms TTL=128 Reply from 192.168.4.3: bytes=100 time<1ms TTL=128 Буду благодарен за любую помощь и литературу. Это сообщение отредактировал(а) Vitek1234 - 25.11.2010, 22:08 |
||||
|
|||||
| Skipy |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 487 Регистрация: 24.8.2006 Где: Москва, Россия Репутация: 4 Всего: 16 |
Не сравнивайте ping с чтением.
|
|||
|
||||
| Vitek1234 |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 19 Регистрация: 11.2.2008 Репутация: нет Всего: нет |
Да может и не стоит. А всё таки...Почему так...Сначала <1mc, а потом такой резкий скачок.
Существует некоторое решение хранения данных. Доступ реализован через сокеты. Но если мы делаем соединение с удалённого компьютера, время чтения очень медленное. Подозреваю что здесь замешан буфер Это сообщение отредактировал(а) Vitek1234 - 26.11.2010, 12:52 |
|||
|
||||
| COVD |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1655 Регистрация: 26.7.2005 Репутация: 11 Всего: 43 |
Зачем делать flush() после записи в сокет длины данных? Это выглядит как желание, чтобы этот один байт был немедленно отправлен. Данные отправляются пакетами, у каждого пакета есть хедер. Посылка данных мелкими порциями неэффективна.
Это врядли причина, но лучше не мешать сокету делать свое дело. |
|||
|
||||
| Vitek1234 |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 19 Регистрация: 11.2.2008 Репутация: нет Всего: нет |
Принимается. Но на самом деле я написал некий Мок этого сервера. Так вот и сам сервер даёт эту задержку. Причём тогда, когда размер передаваемых данных больше 256 байт. Чудеса...Но 256 байт - это не магическое число. 256 байт - это размер пакета? И перед отправкой следующего пакета он делает задержку 200 мс. Но зачем?
|
|||
|
||||
| COVD |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1655 Регистрация: 26.7.2005 Репутация: 11 Всего: 43 |
Можете поэксперементировать с отключением в сокете Nagle algorithm - setTcpNoDelay, но это во многих случаях только во вред. По умолчанию он включен и это правильно. Размер TCP пакета примерно 1.5 кб.
|
|||
|
||||
![]()
|
| Правила форума "Java" | |
|
|
Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Java: Работа с сетью | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |