Легенда:
новое сообщение
закрытая нитка
новое сообщение
в закрытой нитке
старое сообщение
|
- Напоминаю, что масса вопросов по функционированию форума снимается после прочтения его описания.
- Новичкам также крайне полезно ознакомиться с данным документом.
Fd_connect 27.10.01 14:02 Число просмотров: 1316
Автор: Лamo Статус: Незарегистрированный пользователь
|
Всё очень просто,
делаешь сокет,
создаёшь событие - WSAEVENT hEvent = WSACreateEvent
потом вызывай всаэвентселект -
WSAEventSelect(sock, hEvent, FD_READ | FD_WRITE | FD_CONNECT | FD_CLOSE);
потом коннектся - connect,
потом залупливай бесконечный луп и жди событий
while(1)
{
DWORD dwRet = WSAWaitForMultipleEvents(1, &hEvent, FALSE, 5000, FALSE);
5000 - это время таймаута ожидания или коннекта или send или recv
if(dwRet == WSA_WAIT_TIMEOUT)
{
MessageBox("timeout!", "", 0);
break;
}
потом вызывай -
WSANETWORKEVENTS events;
WSAEnumNetworkEvents(sock, hEvent, &events);
потом смари чо за события у тебя -
if(events.lNetworkEvents & FD_CONNECT)
{
сдесь мы сконнектились, и можно уже слать или принимать данные, в зависимости от того что те надо, например есл ты конектися на хттп, то те сдесь надо отправлять запрос, если смтп то принимать ответ 220
}
if(events.lNetworkEvents & FD_READ)
{
сюда попадёшь если сокет готов к передачи данных
}
if(events.lNetworkEvents & FD_WRITE)
{
сдесь к приёму данных
}
if(events.lNetworkEvents & FD_CLOSE)
{
событие закрытия сокета
}
}
в конце закрывай сокет - closesoket
и события - WSACloseEvent
И если надо, не забудь выходить из лупа брейком
|
- Fd_connect - Heromantor 27.10.01 11:22 [641]
- Fd_connect - Лamo 27.10.01 14:02 [1316]
|
|
|