как найти статус дескриптора сокета в vxworks - PullRequest
0 голосов
/ 11 ноября 2010

Как проверить состояние удаленного конца с помощью дескриптора сокета в vxworks.Я использую TCP соединение.

Ответы [ 3 ]

0 голосов
/ 14 ноября 2010
0 голосов
/ 18 ноября 2010

По крайней мере, для некоторых стеков, полученных из BSD, с которыми я работал, вы можете проверить, закрылся ли другой конец, используя getpeername (). При поддержке стеков это вернет -1 и установит ENOTCONN, если другой конец закрыл свою половину соединения.

Это позволяет вам запрашивать, вызвал ли другой конец close (), без необходимости вызова чтения с сокета. Вопреки тому, что было сказано ранее, это можно узнать из стека IP, не инициируя какое-либо соединение с другим концом, поскольку стек IP получает уведомление FIN, когда другой конец закрывает свою половину соединения. Эта информация может затем использоваться стеком для уведомления будущих абонентов getpeername () о том, что другой конец закрыт.

0 голосов
/ 12 ноября 2010

VxWorks использует API сокетов BSD.Когда удаленная станция завершила соединение, функции ввода-вывода, такие как функции read () и write (), возвращают состояние ошибки (-1 для чтения / записи) и устанавливают errno .

...