C Socket, проверяющий сервер - PullRequest
0 голосов
/ 16 ноября 2010

Как можно проверить, невозможно ли соединение (то есть сервер не работает ...) с сокетами c? Другими словами; клиент пытается установить контакт с

connect(sock, (struct sockaddr *)&serveraddr, sizeof serveraddr), но сервер не отвечает. Клиент должен затем получить некоторую переменную, которая может проверить состояние сервера, без использования чтения / записи?

Ответы [ 2 ]

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

connect (3) вернет -1 в случае ошибки и установит errno на соответствующую ошибку.

Один случай, который вам, возможно, придется обрабатывать вручную, это тайм-аут.Для этого вы можете использовать несколько потоков (второй поток убивает сокет, если он не подключен после истечения времени ожидания), или использовать неблокирующие сокеты + poll (2) .Но это должно быть редко.

0 голосов
/ 02 июня 2016

1Пожалуйста, проверьте ваш режим сокета, если вы не меняли режим сокета. Его режим блокирует сокет по умолчанию.

2.Если используется режим сокета блокировки, и если есть клиент, подключите сервер, потому что сервер блокируется с текущим клиентом.

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

Я не знаю, прояснит ли это ситуацию или сделает ее более запутанной. Надеется помочь.

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