Сброс сокета - PullRequest
       5

Сброс сокета

3 голосов
/ 23 ноября 2010

Мое приложение подключается как клиент через Ethernet к процессу сервера.

Поскольку сервер хорошо известен и не изменится, UDP и TCP настроены с использованием

socket(); 
setsockopt(SO_REUSEADDR);
bind(); 
connect();

Протокол соединения включает в себя биение, отправленное в обоих направлениях.

Когда я обнаруживаю ошибку в соединении, например, время ожидания биений, мне нужно сбросить соединение.

Достаточно ли просто подключиться () к нулевому адресу и затем заново подключиться ()после короткой паузы, или я должен закрыть сокет и затем заново инициализировать с нуля?

спасибо

Ответы [ 2 ]

2 голосов
/ 23 ноября 2010

После ошибки сокета вы должны выбросить один из них в руки и перезапустить установку с новым сокетом.

Документация Winsock , например:

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

1 голос
/ 23 ноября 2010

Вы должны close(2) сокет и заново все сделать. Почему вы bind(2) на клиенте?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...