Я пишу простое приложение, которое обеспечивает соединение между двумя компьютерами в C. У меня проблема с одновременным чтением и записью в сокете. Я могу проверить, нажал ли пользователь какой-либо ключ на getch()
, но я не знаю, как проверить, если это что-то в буфере сокета. Когда я использую функцию read()
, она ждет, пока не появится что-то в сокете. Я хотел проверить сокет буфера, а затем использовать read()
, но я не могу найти какой-либо функции/флага, чтобы проверить это. Возможно, это другое решение для этой проблемы, возможно, использовать другой поток для чтения?Как я могу проверить, доступно ли это в сокете?
1
A
ответ
0
Вы можете использовать метод sys/ioctl.h
файла ioctl
:
#include <sys/ioctl.h>
...
int count;
ioctl(fd, FIONREAD, &count);
Ссылка кредита: This Answer
Параметр 'выберите()' функция тайм-аута является способ получения уведомления при поступлении данных на сокете. – mathematician1975
вам нужно попробовать установить Async socket. пожалуйста, проверьте это http://stackoverflow.com/questions/2331869/what-are-async-sockets – GingerJack
@Mautokar: Вы должны хотя бы предоставить пример кода для начала. – perror