Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Сети > Ситуация, когда winsock2::connect() вернёт


Автор: powerfox 16.12.2008, 02:46
Привет!
Как воспроизвести сабж?
Пробовал просто создавать аксептор, биндить его на порт, устанавливать число соединений на 1 соединение, но не вызывать аксепт.
По идее, всё правильно?

Автор: MAKCim 16.12.2008, 14:09
Цитата(powerfox @  16.12.2008,  02:46 Найти цитируемый пост)
По идее, всё правильно? 

нет
в модуле TCP реализована очередь полностью установленных соединений
т. е в таком случае connect завершится успешно, а последующий write/read нет

Автор: powerfox 16.12.2008, 16:16
MAKCim, а как мне тогда воспроизвести ситуацию, когда коннект блокирует?
Просто я занимаюсь сетевой библиотекой и нужны тесты.

Автор: J0ker 17.12.2008, 05:09
Цитата(powerfox @  16.12.2008,  16:16 Найти цитируемый пост)
как мне тогда воспроизвести ситуацию, когда коннект блокирует?

делать коннект на не открытый порт, при этом система должна быть настроена на игнорирование таких коннектов

Автор: powerfox 18.12.2008, 02:25
Цитата(J0ker @  17.12.2008,  06:09 Найти цитируемый пост)
делать коннект на не открытый порт, при этом система должна быть настроена на игнорирование таких коннектов 

Спасибо, попробую на досуге. А разве в данном случае не будет что-то типа "хост не доступен"?

Автор: J0ker 18.12.2008, 05:09
Цитата(powerfox @ 18.12.2008,  02:25)
Цитата(J0ker @  17.12.2008,  06:09 Найти цитируемый пост)
делать коннект на не открытый порт, при этом система должна быть настроена на игнорирование таких коннектов 

Спасибо, попробую на досуге. А разве в данном случае не будет что-то типа "хост не доступен"?

все зависит от настроек стека
если стек настроен на reject с посылкой RST (reset) пакета - то будет что-то вроде host actively refused connection
если стек настроен на reject с посылкой icmp - будут различные варианты "хост недоступен"
вам нужно что-бы стек был настроен на drop - тогда пакеты будут просто уничтожаться и ничего в ответ посылаться не будет, и вы сможете безболезненно получить wouldblock
для линукса смотрите ман по iptables

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)