![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
НЕ ставиться таймаут на recvfrom!
c-forever © (2005-01-24 20:44:00)делаю
int timeout = 1000;
setsockopt(sockRaw, SOL_SOCKET, SO_RCVTIMEO, (char*)&timeout, sizeof(timeout));
чтобы таймаут созданному сокету поставить, потом вызываю
recvfrom(sockRaw, recvbuf, MAX_PACKET, 0, (struct sockaddr*)&from, &fromlen);
и если нет ответа то прога подвисает (типа ждет), хотя я ставил таймаут... В чем тут дело, помогите плз.
c-forever (2005-01-25 14:26:00) [1]Да-да. Дак и делаю. Сразу по WM_CREATE вызываю
WSAStartup(MAKEWORD(2,2), &WSAData);.
затем создаю сырой сокет:
sockRaw = WSASocket (AF_INET, SOCK_RAW, IPPROTO_ICMP, NULL, 0,0);
затем ставлю таймаута на send и recv:
ште timeout = 1000;
iSize = setsockopt(sockRaw, SOL_SOCKET, SO_SNDTIMEO, (char*)&timeout, sizeof(timeout));
iSize = setsockopt(sockRaw, SOL_SOCKET, SO_RCVTIMEO, (char*)&timeout, sizeof(timeout));
затем использую настроенный сокет для получения датаграмм:
iSize = recvfrom(sockRaw,recvbuf,MAX_PACKET,0,(struct sockaddr*)&from, &fromlen);
но если сервер не отвечает то прога висит... Что не так? Может есть какой-нить др. способ установления таймаута на такие сокеты?
Rouse_ (2005-01-25 11:37:00) [2]
available in the Microsoft implementation of Windows Sockets 2
WSASartup($202, WSAData);