Доброго времени суток.
Подскажите как правильно завершит работу сервера написаного на C++ висящего на определенном TCP порту, чтобы порт не оставался открытым после выхода из программы
>Доброго времени суток.
>Подскажите как правильно завершит работу сервера написаного на C++ висящего на определенном
>TCP порту, чтобы порт не оставался открытым после выхода из программы
>
closesocket(2);или close(2);
точно не помню, короче важно закрыть сокеты за это и отвечает чифра 2, закрывая сокеты как передающей стороны так и принимающей
>>Доброго времени суток.
>>Подскажите как правильно завершит работу сервера написаного на C++ висящего на определенном
>>TCP порту, чтобы порт не оставался открытым после выхода из программы
>>
>
>
>closesocket(2);
>
>или close(2);
>
>точно не помню, короче важно закрыть сокеты за это и отвечает чифра
>2, закрывая сокеты как передающей стороны так и принимающейто что Вы видимо имели в виду называется shutdown
P.S. Господа, имейте совесть - давая ответы загляните предварительно в man, да и google тоже может помочь..
>то что Вы видимо имели в виду называется shutdownвозможно я делаю что-то не так, но завершаю работу именно shutdown-ом
...
int sid, cid;
sid = socket();
bind();
list();
...
cid = accept();
...
close (cid);
...
shutdown(sid, SHUT_RDWR);
close(sid);
...Но порт всеравно остается открытый
>Но порт всеравно остается открытыйЭто особенность протокола TCP, соединение остаётся некоторое время после закрытия в состоянии TIME_WAIT. Если вам это сильно досаждает, см. man setsockopt + опции SO_LINGER или SO_REUSEPORT.
>Это особенность протокола TCP, соединение остаётся некоторое время после закрытия в состоянии
>TIME_WAIT. Если вам это сильно досаждает, см. man setsockopt + опции
>SO_LINGER или SO_REUSEPORT.Очень мешало во время отладки приложения.
Большое спасибо, разобрался.