Прямо сейчас у меня есть простой TCP-сервер/клиент. Я настроил его так, чтобы всякий раз, когда клиент подключается, он получает forked(), и само соединение помещается в бесконечный цикл, так что соединение остается открытым. Сервер получает информацию от клиента, у меня есть чек, чтобы удостовериться, что количество полученных байтов -> 0. До сих пор это работало хорошо при определении того, отключен ли клиент. Но если сервер отключится, клиент тоже выключится, но не будет установлено errno. Как я могу проверить, что сервер все еще подключен?Как работать с сервером закрыть TCP
ответ
Когда другой конец разъединяется, сокет станет читаемым (считывание по разъему не будет заблокировано), а read()
вернет 0
. Это обычный способ отключения связи (похоже, вы уже делаете это на стороне сервера).
Если вы заблокированы в write()
или попытаться write
на сокете закрыт на другом конце, ваш процесс будет прислан SIGPIPE
сигнала и write
вернется -1
с errno
набором для EPIPE
.
Действие по умолчанию для SIGPIPE
заключается в прекращении процесса, поэтому, если вы его не изменили, ваш клиент просто умрет, когда он попытается написать сервер, который ушел.
Незадолго до того, как я прочитал этот ответ, я вспомнил, как запустить его через gdb и увидел, что это сигпип. Я дам вам кредит, где кредит должен быть. Благодаря! – whatWhat
- 1. Проблема с Grails с сервером Tcp и сервером Tcp
- 2. Связь TCP с сервером
- 3. Javascript TCP-соединение с сервером
- 4. Как создать соединение с сервером tcp
- 5. Как закрыть TCP/IP-соединение
- 6. Как закрыть события, связанные с сервером События
- 7. Akka websocket - как закрыть соединение с сервером?
- 8. Проблема связи с компьютером/сервером .NET TCP
- 9. Правильно закрыть TCP-сокет
- 10. Завершение соединения соединения Tcp сервером является ликорабельным?
- 11. Согласование с сервером TCP с веб-сервера
- 12. Проблемы с Android-приложениями с сервером TCP
- 13. MayaVi ValueError, как работать с wx-сервером?
- 14. Клиент Microchip TCP, разговаривающий с сервером TCP Microchip
- 15. C#: Простой вопрос с сервером TCP
- 16. Связывание TCP-сервера с внешним сервером SOCKS
- 17. PHP-сервер с потоковым TCP-сервером
- 18. C2228: Ошибка с сервером TCP asio
- 19. Приложение ASP.Net MVC 5 с TCP-сервером
- 20. Ошибка связи с сервером эхо-трафика TCP
- 21. Нужно иметь «стабильное» TCP-соединение с сервером
- 22. проблема с сервером tcp и клиентом
- 23. XmlSerializer и NetworkStream с сервером Tcp - клиент
- 24. TCP-соединение с сервером происходит медленно?
- 25. Соединение с клиентским сервером JAVA TCP
- 26. Управление TCP-сервером в Python
- 27. Закрыть соединение akka-http с сервером
- 28. Android Tcp Client проверяет соединение с сервером
- 29. Safari не работает с моим TCP-сервером
- 30. Golang Несколько соединений с сервером TCP
Ваш вопрос не очень ясен. Вы хотите убедиться, что сервер остается подключенным при передаче информации клиенту? – chutsu
Вы спрашиваете, как узнать, закрыт ли удаленный конец TCP-соединения? –
Да, я хотел бы знать, что делать на стороне клиента, если сервер случайно отключается. – whatWhat