2015-05-01 5 views
1

Я пишу простое приложение, которое обеспечивает соединение между двумя компьютерами в C. У меня проблема с одновременным чтением и записью в сокете. Я могу проверить, нажал ли пользователь какой-либо ключ на getch(), но я не знаю, как проверить, если это что-то в буфере сокета. Когда я использую функцию read(), она ждет, пока не появится что-то в сокете. Я хотел проверить сокет буфера, а затем использовать read(), но я не могу найти какой-либо функции/флага, чтобы проверить это. Возможно, это другое решение для этой проблемы, возможно, использовать другой поток для чтения?Как я могу проверить, доступно ли это в сокете?

+4

Параметр 'выберите()' функция тайм-аута является способ получения уведомления при поступлении данных на сокете. – mathematician1975

+0

вам нужно попробовать установить Async socket. пожалуйста, проверьте это http://stackoverflow.com/questions/2331869/what-are-async-sockets – GingerJack

+0

@Mautokar: Вы должны хотя бы предоставить пример кода для начала. – perror

ответ

0

Вы можете использовать метод sys/ioctl.h файла ioctl:

#include <sys/ioctl.h> 

... 

int count; 
ioctl(fd, FIONREAD, &count); 

Ссылка кредита: This Answer