Форум программистов, компьютерный форум CyberForum.ru
Наши страницы

С под Linux

Войти
Регистрация
Восстановить пароль
 
xoxotyn
0 / 0 / 0
Регистрация: 28.12.2016
Сообщений: 1
#1

Клиент-сервер (функция read) - C Linux

28.12.2016, 19:24. Просмотров 363. Ответов 2
Метки нет (Все метки)

Что должна возвращать функция read, если я пытаюсь считать данные, но сервер мне их не отсылал? И должна ли? Потому что у меня просто зависает программа. То есть я даже проверку сделать не могу.
0
Лучшие ответы (1)
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
28.12.2016, 19:24
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Клиент-сервер (функция read) (C Linux):

Сервер - Клиент - C (Си)
Добрый вечер. Почему клиент может отправлять сообщение только один раз? Ввод сообщения и отправку на сервер зациклил... Сервер: ...

Падает программа клиент-сервер - C Linux
Помогите пожалуйста! Закрываю сервер, падает клиент. Самое главное, что в клиенте, не могу понять, вроде все обрабатываю правильно Код:...

Клиент и сервер в одной программе - C Linux
Здравствуйте. Вот код: #include <sys/types.h> #include <sys/socket.h> #include <netinet/in.h> #include <unistd.h> #include...

Низкоуровневые сокеты. Udp клиент-сервер - C Linux
Здравствуйте.Помогите пожалуйста поправить код сервера,принимающего сообщение от клиента и выводящего его на экран.клиент компилируется,а...

Очень нужен клиент-сервер на Си или Си++ - C (Си)
Очень нужен клиент-сервер на Си или Си++, может у кого нибудь есть, поделитесь пожалуйста... Само задание: Клиент должен получать от...

Как написать socket (клиент-сервер) на Си? - C (Си)
Как написать сокет (клиент-сервер) на си,который находит алгебраическое дополнение к элементам матрицы размерности N,с помощью метода...

2
Вованя
126 / 134 / 48
Регистрация: 20.02.2014
Сообщений: 468
28.12.2016, 20:08 #2
xoxotyn, так и будет висеть, пока сервер не пришлет, ну или ошибка не вывалится man read
1
Humanoid
Почетный модератор
9846 / 3743 / 168
Регистрация: 12.06.2008
Сообщений: 11,480
28.12.2016, 22:02 #3
Лучший ответ Сообщение было отмечено автором темы, экспертом или модератором как ответ
Цитата Сообщение от xoxotyn Посмотреть сообщение
Что должна возвращать функция read, если я пытаюсь считать данные, но сервер мне их не отсылал?
Если сокет находится в блокирующем режиме (он используется по умолчанию), то, как сказали выше, функция не вернёт управление до тех пор, пока не примет хоть какие-нибудь данные. Если сокет в неблокирующем режиме, то read() вернёт -1, а errno будет установлена в EAGAIN.
Чтобы перед запуском read() убедиться, что данные уже ожидают и функция не заблокирует работу приложения, можно воспользоваться одной из функций select/poll/epoll. Все эти функции немного по разному вызываются, но в простейшем случае выполняют одну и туже задачу - ждут, пока для файлового дескриптора (а сокет - это тоже файловый дескриптор) не будут доступны данные. Но время ожидания у этих функций можно регулировать. Например, если указать timeout как 0, тогда функция сразу вернёт состояние файлового дескриптора.
1
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
28.12.2016, 22:02
Привет! Вот еще темы с ответами:

Клиент сервер не работает через интернет - C Linux
Делаю сетевую консольную игрушку для курсача, если подключатся через 127.0.0.1 или через локальный ip то все работает, но когда пытаюсь...

Чат (Сервер|Клиент) с UDP протоколом - C Linux
Всем Привет, вообщем задача написать простенький чат c использованием UDP протокола. Для начала я написал эхо-сервер (1 сервер - 1...

TCP/IP сервер - клиент - как работать с потоками? - C Linux
Доброго времени суток, друзья. Пытаюсь создать локальный чат по типу клиент-сервер по протоколу tcp/ip. Имеется большая проблема с...

Создать взаимодействие клиент-сервер с помощью Канала FIFO - C Linux
Хочу создать взаимодействие клиент-сервер с помощью Канала FIFO. Но не могу открыть файл. Решил, что ошибка не у меня. Вот нашел код на не...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru