LINUX.ORG.RU

можно ли закрыть соединение не уничтожая сокет?


0

0

тут от нечего делать накодил демон,который каждые 10 сек делает коннект к разным веб серверам. если не удается подключится к 3 серверам, правится таблица роутинга. работает замечательно, НО при каждом коннекте приходится создавать сокет,присваевать ему опции и делать бинд() к ип!
как закрыть tcp соединение ,не закрывая дескриптор? чтобы не создавать его снова ,делать бинд и т.д.
так как девайс встроенный, хочется как можно большей экономии ресурсов :)

Ответ на: комментарий от klalafuda

спасибо. придеться значит оставить как есть.

Cosmicman ★★
() автор топика

Видимо, я не до конца проснулся. Какой bind для клиентского сокета? Может таки connect?

Кстати, да! connect есть, а disconnect для reusage отсутствует...хм. Я бы таки эмпирически опробовал shutdown старое соединение + connect к новому серверу. Если не сработает, то, скорее всего, нельзя.

farisey
()
Ответ на: комментарий от farisey

> Я бы таки эмпирически опробовал shutdown старое

Проверял, не получается. EISCONN на втором connect'е.

DrLivsy
()
Ответ на: комментарий от farisey

> Какой bind для клиентского сокета?

это нужно чтобы явно указать с какого адреса соединение устанавливать, может применяться и на клиентском сокете.

true_admin ★★★★★
()
Ответ на: комментарий от farisey

>В смысле для клиентского tcp-сокета.

с помошью bind() можно явно указать с какого ip делать connect(). это нужно, когда несколько интерфейсов с выходом в интернет.

>Проверял, не получается. EISCONN на втором connect'е.

аналогично.

Cosmicman ★★
() автор топика

В винде есть такой api. Но там это имеет смысл, поскольку создание сокетов довольно затратно. Сомневаюсь, что в linux надо такие сложности. В любом случае это не переносимо. К тому же судя по описанию задачи - о производительности тут говорить вообще неуместно.

alex4
()
Ответ на: комментарий от alex4

это да. просто мне не нравится когда в коде есть "лишние телодвижения" :)

Cosmicman ★★
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.