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

Исходное сообщение
"Как добиться восстановления соединения с socket server"

Отправлено caleb , 10-Май-07 14:48 
Привет, all!

Недавно начал программировать под Linux на C. Нужно реализовать задачу постоянного соединения пары сокетов, чтобы можно было периодично (раз в 1 мин., например) обмениваться короткими строчками данных. Написал код по примерам из инета, вроде бы все работает. Однако, возникает ситуация: если в перерывах между запросами от клиента сервер падает и сразу поднимается (перед вызовом bind() в сервере использую установку сокета в SO_REUSEADDR - может этого и не надо было делать?), то клиент выдает только "Software caused connection abort" (ошибка #103) при повторном выполнении connect().

Помогите, pls!


Содержание

Сообщения в этом обсуждении
"Как добиться восстановления соединения с socket server"
Отправлено vic , 10-Май-07 15:58 
>перед вызовом bind() в сервере использую установку сокета в SO_REUSEADDR - может этого и не
> надо было делать?
надо.

> то клиент выдает только "Software caused connection abort" (ошибка #103) при повторном выполнении connect().

часом не на том же дескрипторе сокета делаешь повторный конект?
надо закрыть (close()), и открыть снова (socket()) а потом уже connect().


"Как добиться восстановления соединения с socket server"
Отправлено caleb , 10-Май-07 16:04 
>>перед вызовом bind() в сервере использую установку сокета в SO_REUSEADDR - может этого и не
>> надо было делать?
>надо.
>
>> то клиент выдает только "Software caused connection abort" (ошибка #103) при повторном выполнении connect().
>
>часом не на том же дескрипторе сокета делаешь повторный конект?
>надо закрыть (close()), и открыть снова (socket()) а потом уже connect().


Хотел уточнить: делать close() нужно обязательно и без него никак?

Попробую все-таки с close().


"Как добиться восстановления соединения с socket server"
Отправлено vic , 10-Май-07 16:21 
>Хотел уточнить: делать close() нужно обязательно и без него никак?
обязательно, см. man connect там так и написано.