![]() |
Здравствуйте, гость ( Вход | Регистрация )
![]() |
oleg_2 |
![]()
Сообщение
#1
|
Студент ![]() Группа: Новичок Сообщений: 12 Регистрация: 25.7.2009 Пользователь №: 943 Спасибо сказали: 1 раз(а) Репутация: ![]() ![]() ![]() |
Вопрос по сокету-2
Язык СИ ОС UNIX Имеются "клиент" и "сервер" (самодельные). Работают поверх TCP. Фрагмент клиента: //--- sd_client -сокет, соединенный с сервером --- k=read(sd_client, buf, sizeof(buf)); Конец фрагмента. Сервер на запрос клиента посылает данные, а затем закрывает сокет close(sd_serv) на своей стороне. При закрытом на сервере сокете (sd_serv), на стороне клиента вызов read() возвращает 0, и это признак конца передачи. В штатном режиме это работает. Но на сервере иногда случаются ошибки (не доступны все или часть данных). Вопрос. Возможно ли на стороне сервера так подействовать на сокет (sd_serv), что бы на стороне клиента вызов read() вернул бы -1. Кто знает прошу ответить. |
|
|
![]() |
ViGOur |
![]()
Сообщение
#2
|
![]() Мастер ![]() ![]() ![]() ![]() ![]() ![]() Группа: Модератор Сообщений: 3296 Регистрация: 9.10.2007 Из: Москва Пользователь №: 4 Спасибо сказали: 231 раз(а) Репутация: ![]() ![]() ![]() |
Раз ты работаешь поверх TCP, значит у тебя есть свой аля протокол передачи данных, вот в нем и отсылай сообщение об ошибке.
Или просто закрывай соединение и все. Если это не подходит, то объясни для чего именно тебе нужно в read получить -1? Просто если идет ошибка работы с сокетама, то нужно обрабатывать ошибки. Если ошибки на стороне сервера, например подготовки пакета, то нужно делать надстройку, которая сообщит об этом клиенту... |
|
|
![]() ![]() ![]() |
![]() |
|
Текстовая версия | Сейчас: 3.7.2025, 17:30 |