The OpenNET Project / Index page

[ новости/++ | форум | wiki | теги ]

21.09.2005 23:52  Пять наиболее распространенных ошибок при программировании сокетов

В статье "Five pitfalls of Linux sockets programming" описываются пять наиболее часто встречающихся ошибок в программах начинающих программистов, использующих API сетевых сокетов.

Кратко:

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

    1. Главная ссылка к новости (http://www-128.ibm.com/develop...)
    Лицензия: CC-BY
    Тип: английский / Обобщение
    Ключевые слова: tcp, socket, gcc
    При перепечатке указание ссылки на opennet.ru обязательно
    Обсуждение RSS
     
  • 1, coroner, 10:12, 23/09/2005 [ответить] [смотреть все]
  • +/
    нужная статейка..в закладки:)
     
  • 2, max, 12:29, 24/11/2005 [ответить] [смотреть все]
  • +/
    При примере Игнорирование кода статуса завершения операции я бы сказал что не совсем верно контролировать ошибку возвращаемую send. То есть её нужно проверять, но send не вернёт информацию о том что пакет действительно доставлен получателю. В случае не удачной отправки пакета send вернёт всё впорядке. Тем более у него стоит флаг MSG_DONTWAIT. В любом случае необходимо получать подтверждение.
     

     Добавить комментарий
    Имя:
    E-Mail:
    Заголовок:
    Текст:


      Закладки на сайте
      Проследить за страницей
    Created 1996-2017 by Maxim Chirkov  
    ДобавитьРекламаВебмастеруГИД  
    Hosting by Ihor