URL: https://www.opennet.me/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID3
Нить номер: 12285
[ Назад ]

Исходное сообщение
"OpenNews: Пять наиболее распространенных ошибок при программировании сокетов"

Отправлено opennews , 23-Сен-05 10:12 
В статье "Five pitfalls of Linux sockets programming (http://www-128.ibm.com/developerworks/linux/library/l-sockpit/)" описываются пять наиболее часто встречающихся ошибок в программах начинающих программистов, использующих API сетевых сокетов.

Кратко:

-  Игнорирование кода статуса завершения операции;
-  Отсутствие обработки факта закрытия соединения  удаленной стороной;
-  Отсутствие setsockopt(...SO_REUSEADDR..) перед bind();
-  Отправка структурированных данных, забывая про возможные различия их интерпретации на различных платформах;
-  Неправильная организация блочной передачи в рамках одного потока TCP (например, шлют по TCP через send два блока по 100 байт и полагают, что для чтения будет два read по 100, а не один по 200).

URL: http://www-128.ibm.com/developerworks/linux/library/l-sockpit/
Новость: http://www.opennet.me/opennews/art.shtml?num=6126


Содержание

Сообщения в этом обсуждении
"Пять наиболее распространенных ошибок при программировании сокетов"
Отправлено coroner , 23-Сен-05 10:12 
нужная статейка..в закладки:)

"Пять наиболее распространенных ошибок при программировании сокетов"
Отправлено max , 24-Ноя-05 12:29 
При примере Игнорирование кода статуса завершения операции я бы сказал что не совсем верно контролировать ошибку возвращаемую send. То есть её нужно проверять, но send не вернёт информацию о том что пакет действительно доставлен получателю. В случае не удачной отправки пакета send вернёт всё впорядке. Тем более у него стоит флаг MSG_DONTWAIT. В любом случае необходимо получать подтверждение.