Легенда:
новое сообщение
закрытая нитка
новое сообщение
в закрытой нитке
старое сообщение
|
- Напоминаю, что масса вопросов по функционированию форума снимается после прочтения его описания.
- Новичкам также крайне полезно ознакомиться с данным документом.
 |
select -WinSock 08.11.01 00:56 Число просмотров: 1069
Автор: Лamo Статус: Незарегистрированный пользователь
|
Примерно так:
unsigned long on = 1;
unsigned long off = 0;
struct timeval tv = { 5, 0 }; //Таймаут 5 секунд
fd_set fdset;
FD_ZERO(&fdset); //обнуляем
ioctlsocket(sock, FIONBIO, &on); //переводим в неблокир. режим
connect(); //конектимся
FD_SET(sock, &fdset); // привязываем сокет к fdset
int ret = select(1, NULL, &fdset, NULL, &tv); // вызываем селект на write
if(ret == SOCKET_ERROR)
return; //error
else if(ret == 0)
{
//timeout
return;
]
else
{
if(!FD_ISSET(sock, &fdset))
return;
// сконектились!
send(sock , data, strlen(data), 0); // посылаем
ioctlsocket(sock, FIONBIO, &off); // переводим в блокир. режим
recv(sock, data, sizeof(data), 0); // принимаем
}
|
<programming>
|
select -WinSock 07.11.01 22:39
Автор: valu Статус: Незарегистрированный пользователь
|
блин!!!
помогите с функцией select -WinSock
смысл ее я понял а вот реализовать затрудняюсь
скинте пример
спасибо
|
 |
select -WinSock 08.11.01 00:56
Автор: Лamo Статус: Незарегистрированный пользователь
|
Примерно так:
unsigned long on = 1;
unsigned long off = 0;
struct timeval tv = { 5, 0 }; //Таймаут 5 секунд
fd_set fdset;
FD_ZERO(&fdset); //обнуляем
ioctlsocket(sock, FIONBIO, &on); //переводим в неблокир. режим
connect(); //конектимся
FD_SET(sock, &fdset); // привязываем сокет к fdset
int ret = select(1, NULL, &fdset, NULL, &tv); // вызываем селект на write
if(ret == SOCKET_ERROR)
return; //error
else if(ret == 0)
{
//timeout
return;
]
else
{
if(!FD_ISSET(sock, &fdset))
return;
// сконектились!
send(sock , data, strlen(data), 0); // посылаем
ioctlsocket(sock, FIONBIO, &off); // переводим в блокир. режим
recv(sock, data, sizeof(data), 0); // принимаем
}
|
|
|