Вниз
Скачать: CL | DM;

НЕ ставиться таймаут на recvfrom!   Найти похожие ветки 

 
c-forever   (2005-01-24 20:44) [0]

делаю
int timeout = 1000;
setsockopt(sockRaw, SOL_SOCKET, SO_RCVTIMEO, (char*)&timeout, sizeof(timeout));

чтобы таймаут созданному сокету поставить, потом вызываю

recvfrom(sockRaw, recvbuf, MAX_PACKET, 0, (struct sockaddr*)&from, &fromlen);

и если нет ответа то прога подвисает (типа ждет), хотя я ставил таймаут... В чем тут дело, помогите плз.


 
Rouse_ ©   (2005-01-25 11:37) [1]

available in the Microsoft implementation of Windows Sockets 2

WSASartup($202, WSAData);


 
c-forever   (2005-01-25 14:26) [2]

Да-да. Дак и делаю. Сразу по 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);

но если сервер не отвечает то прога висит... Что не так? Может есть какой-нить др. способ установления таймаута на такие сокеты?



Страницы: 1 вся ветка

Скачать: CL | DM;



Память: 0.45 MB
Время: 0.034 c
4-1107888763
ali_tash
2005-02-08 21:52
2005.03.27
есть ли фанкция аналог sleep для своего потока ?


3-1109232078
Топпер
2005-02-24 11:01
2005.03.27
Log FireBird1.5 SS под Linux


14-1109173559
Piter
2005-02-23 18:45
2005.03.27
TimeZero


4-1108453823
BiN
2005-02-15 10:50
2005.03.27
Ошибка в MS Platform SDK (?)


3-1109837726
mariya_mezenceva
2005-03-03 11:15
2005.03.27
запрос, котопый выбирает данные из двух баз




   Наверх