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
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.