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 3.0
    Короткая ссылка: https://opennet.ru/6126-tcp
    Ключевые слова: tcp, socket, gcc
    При перепечатке указание ссылки на opennet.ru обязательно


    Обсуждение (2) RSS
  • 1, coroner (?), 10:12, 23/09/2005 [ответить]  
  • +/
    нужная статейка..в закладки:)
     
  • 2, max (??), 12:29, 24/11/2005 [ответить]  
  • +/
    При примере Игнорирование кода статуса завершения операции я бы сказал что не совсем верно контролировать ошибку возвращаемую send. То есть её нужно проверять, но send не вернёт информацию о том что пакет действительно доставлен получателю. В случае не удачной отправки пакета send вернёт всё впорядке. Тем более у него стоит флаг MSG_DONTWAIT. В любом случае необходимо получать подтверждение.
     
     Добавить комментарий
    Имя:
    E-Mail:
    Текст:



    Партнёры:
    PostgresPro
    Inferno Solutions
    Hosting by Hoster.ru
    Хостинг:

    Закладки на сайте
    Проследить за страницей
    Created 1996-2024 by Maxim Chirkov
    Добавить, Поддержать, Вебмастеру