Сокеты: Что заставляет read () возвращать EINVAL? - PullRequest
1 голос
/ 16 мая 2011

Клиентская программа-сокет устанавливает соединение с сервером, записывает несколько байтов и ожидает ответа, используя (блокирование) read().

Но это не удается с ошибкой EINVAL ("Неверный аргумент").Предыдущие вызовы create(), bind() и connect() сокета были сделаны успешно.

Мой вопрос

  • Что здесь не так?

Платформа - Linux x64.

Ответы [ 2 ]

2 голосов
/ 16 мая 2011

fd прикреплен к объекту, который не подходит для чтения;или файл был открыт с флагом O_DIRECT, и либо адрес, указанный в buf, значение, указанное в count, либо текущее смещение файла, не выровнен соответствующим образом.

1 голос
/ 17 мая 2011

Проблема заключалась в том, что я передал размер 1 байт функции read().Кажется, что это не поддерживается
(почему? Какой минимальный размер? Он должен быть кратен 2 / битности платформы?)прохождение 8 и все работает.Спасибо всем за ваши комментарии.

...