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