LINUX.ORG.RU

SOKETS recv () подскажите идею


0

0
Я пока только начинаю, по-этому простите за возможно глупый вопрос: ;-) Пишу небольшой клиент и сталкнулся со след. проблемой: после проверки на наличие соединения if( connect( .... ) == -1 ) { perror("in connect ") ; toLog("Error in connect"); close (s); return 0; } начинаю ожидать данные : recv(s, buf, sizeof ( buf ) , 0); // надо принять всего одно слово. и если в этот момент сервак не отвечает ничего --> "висим" ;-) Подскажите как можно обойти эту проблему ( если можно по проще ) Заранее спасибо. student@cyber.miem.edu.ru

Надо перевести сокет в неблокирующий режим.
Посмотри ioctl и setsockopt.
Havoc ★★★★
()
2Toha: Для начала, рекомендую посмотреть на примеры использования select(), которые есть в любой книжке.
vodz ★★★★★
()
recv(s, buf, sizeof ( buf ) , 0) В recv как и в write есть параметр - флаг. Флаги описаны в /usr/include/linux/socket.h Вот два из них - MSG_DONTWAIT и MSG_PEEK. MSG_PEEK действительно описан почти в каждой книжке. А вот где конкретно почитать про ioctl, setsockopt и select может предыдущие авторы подскажут?
anonymous
()
В манах ;)
Про ioctl и setsockopt можно посмотреть и в виндовой документации.
Havoc ★★★★
()
Спасибо, посмотрю ...
anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.