0 / 0 / 0
Регистрация: 07.08.2017
Сообщений: 9
|
|
1 | |
Сокет принял данных больше, чем размер буфера27.08.2017, 22:37. Показов 779. Ответов 4
Метки нет (Все метки)
Простой клиент посылает 100 байт. Сервер просто принимает соединение и больше ничего не делает (данные не считывает, уходит в таймаут). У серверного сокета буфер приема данных стоит 12 байт.
Что я ожидал увидеть в такой ситуации: 1. Размер окна который сервер отправляет клиенту должен быть 12 байт. 2. После прихода первых 12 байт, так как мое приложение не считывает данные (не освобождает буфер), то клиенту отправляется сегмент подтверждающий о принятие первых 12 байт, но с окном 0 байт. А дальше по протоколу, попытки клиента проверить не изменилось ли окно... Что произошло: 1. Размер окна как предполагал. 2. По какой-то причине сервер принимает 3 раза по 12 байт, и только на третий сервер выдает окно в 0 байт. По какой причине сервер принял в 3 раза больше данных? Замечу, что если к примеру поменять буфер на 24, то произойдет тоже самое - 3 раза по 24 байта.
0
|
27.08.2017, 22:37 | |
Ответы с готовыми решениями:
4
Сокет принял данных больше, чем размер буфера Чем больше размер буфера, тем быстрее программа обрабатывает файл? Размер картинки больше чем размер шапки UDP чат. При отправке сообщения, размер которого больше принимаемого буфера, сервер падает |
Модератор
3388 / 2160 / 352
Регистрация: 13.01.2012
Сообщений: 8,378
|
|
28.08.2017, 07:59 | 2 |
Neomorph, буферизация на уровне ОС клиента/ОС сервера/роутера?
0
|
0 / 0 / 0
Регистрация: 07.08.2017
Сообщений: 9
|
|
28.08.2017, 09:00 [ТС] | 3 |
И клиент и сервер на windows 7 на одной машине.
Как проверить есть ли буферизация в ОС? Как отключить, если есть?
0
|
Любитель чаепитий
|
||||||
28.08.2017, 11:42 | 4 | |||||
можно попробовать отключить алгоритм Нейгла.
SO_SNDBUF и SO_RCVBUF , о которых вы, вероятно, знаете.
0
|
0 / 0 / 0
Регистрация: 07.08.2017
Сообщений: 9
|
|
28.08.2017, 13:17 [ТС] | 5 |
GbaLog-, алгоритм тут не причем, с отправлением данных все в порядке. SO_RCVBUF , в том то и проблема, стоит 12 байт, а приняло 36 (если 24, то примет 72, 48 примет 144)
0
|
28.08.2017, 13:17 | |
28.08.2017, 13:17 | |
Помогаю со студенческими работами здесь
5
Размер буфера для получения данных из сокета Размер макета, больше чем экран? Размер текста больше чем 300 Размер структуры больше чем сумма ее элементов Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |