Как проверить состояние удаленного конца с помощью дескриптора сокета в vxworks. Я использую TCP-соединение.Как найти статус дескриптора сокета в vxworks
ответ
Пожалуйста, обратитесь пост: - how to restrict number of connections in client server program
VxWorks использует BSD Sockets API. Когда удаленная станция завершила соединение, функции ввода-вывода, такие как функции read() и write(), возвращают состояние ошибки (-1 для чтения/записи) и устанавливают errno.
По крайней мере, в некоторых BSD полученных стеков я работал, вы можете проверить, был ли другой конец закрыт, используя getpeername(). В поддерживающих стеках это вернет -1 и установите ENOTCONN, если другой конец закрыл половину соединения.
Это позволяет запросить, вызвал ли другой конец функцию close(), не выполняя вызов чтения сокета. Вопреки тому, что было ранее указано, можно найти это из стека IP, не инициируя какое-либо соединение с другим концом, потому что стек IP получает уведомление FIN, когда другой конец закрывает половину соединения. Затем эта информация может использоваться стеком для уведомления будущих абонентов getpeername(), которые закрыли другой конец.
Спасибо за ваш ответ; на самом деле я хочу знать статус дескриптора сокета, не выдавая функцию чтения/записи. Существуют ли какие-либо методы для достижения этого? – Thangaraj
Вы не можете узнать статус удаленной системы, если и до тех пор, пока вы не попытаетесь связаться с ней. В TCP/IP-соединении нет автоматического опроса. – Clifford