В статье "Five pitfalls of Linux sockets programming" описываются пять наиболее часто встречающихся ошибок в программах начинающих программистов, использующих API сетевых сокетов.
Кратко:
Игнорирование кода статуса завершения операции;
Отсутствие обработки факта закрытия соединения удаленной стороной;
Отсутствие setsockopt(...SO_REUSEADDR..) перед bind();
Отправка структурированных данных, забывая про возможные различия их интерпретации на различных платформах;
Неправильная организация блочной передачи в рамках одного потока TCP (например, шлют по TCP через send два блока по 100 байт и полагают, что для чтения будет два read по 100, а не один по 200).
|