| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > C/C++: Сети > Проверка состояния при создании сокета. |
| Автор: tstr 28.6.2009, 05:24 | ||
| Здравствуйте! Кто как делает проверку состояния при создании сокетов? Как лучше
Кто что думает по этому поводу? Спасибо |
| Автор: Andrew121 28.6.2009, 05:35 |
| 4 вариант. |
| Автор: tstr 28.6.2009, 05:40 |
| А почему именно 4? Так надежней? Хотел бы услышать обоснования выбора. Я думаю так: ведь функция может вернуть и не -1, а другое отрицательное число, поэтому лучше писать (0 > x), а переменная errno может быть случайно перезаписана. |
| Автор: Олег2005 28.6.2009, 20:31 |
Только не надо писать IPPROTO_IP в потоковом стиле взаимодействия Или 0, или IPPROTO_TCP |
| Автор: Alca 29.6.2009, 12:12 | ||
http://msdn.microsoft.com/en-us/library/ms740506(VS.85).aspx
Добавлено через 3 минуты и 43 секунды вариант 2 |
| Автор: tstr 29.6.2009, 15:03 | ||||||
Время познее было - очепятался..
Надо не виндовый сокет, поэтому WSAGetLastError не поможет. Но вот что я заметил, заглянув в /usr/src/sys/sys/errno.h:
Получается, что переменная errno может быть установлена в значение, например, 23 и, видимо лучшим для отлова ошибки при создании сокета будут варианты проверок 2 и 4, а для поиска конкретной причины ошибки, сравнивать переменную errno с предопределенными в /usr/src/sys/sys/errno.h константами с помощью какого-нить switch-case... Что скажете? |
| Автор: Alca 30.6.2009, 09:43 | ||
|
| Автор: Олег2005 30.6.2009, 19:01 |
| В профессиональной программе надо проверять АБСОЛЮТНО все возможные ошибки! В том числе и при создании сокета. Проще сделать обертку для каждой сетевой функции - ну а внутри switch очень даже...... |
| Автор: tstr 1.7.2009, 13:16 | ||
Так и буду делать. Спасибо |