В каких случаях в буфере приема сервера (проверяю netstat'ом) может оказаться на один байт больше, чем я отправляю (send) клиентом.
Если это моя ошибка, то она в программе-сервере или в программе-клиенте?
Сетевое программирование (Подскажите пожалуйста)
Модератор: Модераторы разделов
-
un-defined
- Сообщения: 145
- ОС: Kubuntu, Gentoo
Re: Сетевое программирование
завершающий '\0' нигде по дороге не мог прилепиться?
Don`t try - just do or do not ©Master Joda
-
Portnov
- Модератор
- Сообщения: 1786
- Статус: Матёрый линуксоид
- ОС: Debian testing/unstable
Re: Сетевое программирование
Насколько я помню, при чтении из сокета указывается кол-во байт (размер буфера). Может, просто не то указываете?
Работа: Ubuntu 9.10
Дом: Debian testing/unstable и на всякий случай winxp в virtualbox.
Для разнообразия: моя домашняя страница -http://iportnov.ru
Дом: Debian testing/unstable и на всякий случай winxp в virtualbox.
Для разнообразия: моя домашняя страница -http://iportnov.ru
-
agros
- Сообщения: 5
Re: Сетевое программирование
нет, потому что в send'е я же указываю определенное количество байт
-
un-defined
- Сообщения: 145
- ОС: Kubuntu, Gentoo
Re: Сетевое программирование
А recv возвращает какой размер принятых данных - такой же, как отправленных, или тоже на единицу больше?
Don`t try - just do or do not ©Master Joda
-
agros
- Сообщения: 5
Re: Сетевое программирование
мой сервер принимает пакет, в котором есть заголовок - длина пакета (в зависимости от этого принимает столько-то байт).
Отсылаю пакет размером напр 24 байта, принимаю 24 байта, но в буфере приема остается один байт, взявшийся не весть откуда, из-за этого сервер начинает неправильно работать
-
agros
- Сообщения: 5
Re: Сетевое программирование
Разобрался, просто после send'a клиент сразу закрывался, а при закрытии он отправляет служебный байт