The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

форумы  помощь  поиск  регистрация  майллист  ВХОД  слежка  RSS
"Как добиться восстановления соединения с socket server"
Вариант для распечатки  
Пред. тема | След. тема 
Форумы Программирование под UNIX (Public)
Изначальное сообщение [Проследить за развитием треда]

"Как добиться восстановления соединения с socket server"  
Сообщение от caleb (ok) on 10-Май-07, 14:48 
Привет, all!

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

Помогите, pls!

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

 Оглавление

Сообщения по теме [Сортировка по времени, UBB]


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

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

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

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

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


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

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

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

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

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

Архив | Удалить

Индекс форумов | Темы | Пред. тема | След. тема
Оцените тред (1=ужас, 5=супер)? [ 1 | 2 | 3 | 4 | 5 ] [Рекомендовать для помещения в FAQ]




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру