URL: https://www.opennet.me/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID9
Нить номер: 4196
[ Назад ]

Исходное сообщение
"Закрытие сокета"

Отправлено FlanjaR , 20-Апр-05 16:40 
Доброго времени суток.
Подскажите как правильно завершит работу сервера написаного на C++ висящего на определенном TCP порту, чтобы порт не оставался открытым после выхода из программы

Содержание

Сообщения в этом обсуждении
"Закрытие сокета"
Отправлено MIA2000 , 20-Апр-05 17:54 
>Доброго времени суток.
>Подскажите как правильно завершит работу сервера написаного на C++ висящего на определенном
>TCP порту, чтобы порт не оставался открытым после выхода из программы
>


closesocket(2);

или close(2);

точно не помню, короче важно закрыть сокеты за это и отвечает чифра 2, закрывая сокеты как передающей стороны так и принимающей


"Закрытие сокета"
Отправлено MaximKuznetsov , 21-Апр-05 00:26 
>>Доброго времени суток.
>>Подскажите как правильно завершит работу сервера написаного на C++ висящего на определенном
>>TCP порту, чтобы порт не оставался открытым после выхода из программы
>>
>
>
>closesocket(2);
>
>или close(2);
>
>точно не помню, короче важно закрыть сокеты за это и отвечает чифра
>2, закрывая сокеты как передающей стороны так и принимающей

то что Вы видимо имели в виду называется shutdown

P.S. Господа, имейте совесть - давая ответы загляните предварительно в man, да и google тоже может помочь..



"Закрытие сокета"
Отправлено FlanjaR , 21-Апр-05 07:57 
>то что Вы видимо имели в виду называется shutdown

возможно я делаю что-то не так, но завершаю работу именно shutdown-ом


...
int sid, cid;
sid = socket();
bind();
list();
...
cid = accept();
...
close (cid);
...
shutdown(sid, SHUT_RDWR);
close(sid);
...

Но порт всеравно остается открытый


"Закрытие сокета"
Отправлено butcher , 21-Апр-05 08:13 
>Но порт всеравно остается открытый

Это особенность протокола TCP, соединение остаётся некоторое время после закрытия в состоянии TIME_WAIT. Если вам это сильно досаждает, см. man setsockopt + опции SO_LINGER или SO_REUSEPORT.


"Закрытие сокета"
Отправлено FlanjaR , 22-Апр-05 16:25 
>Это особенность протокола TCP, соединение остаётся некоторое время после закрытия в состоянии
>TIME_WAIT. Если вам это сильно досаждает, см. man setsockopt + опции
>SO_LINGER или SO_REUSEPORT.

Очень мешало во время отладки приложения.
Большое спасибо, разобрался.