![]() |
Неблокируемые сокеты
[INTRO]
Здравствуйте, юные хакиры. Сегодня я расскажу вам о неблокируемых(асинхронных) сокетах. Сокеты поддерживают два режима: блокируемые(синхронные) и неблокируемые(асинхронные) . В чем же их основное отличие? Функции(send,recv и.т.д.) после объявления, ожидают окончания операции, а в неблокируемом режиме если данные не приходят сразу, завершают свою работу. Одной из достойных замен неблокирующему режиму являются потоки. [Создаем неблокируемый сокет] Точнее переводим его в асинхронный режим Код:
SCOKET s;Код:
while ( !connect( s, (struct sockaddr *)&sa, sizeof(sa) ) != WSAEWOULDBLOCK )[SELECT] Это можно реализовать с помощью функции select(). Сама функция: Код:
int select(Код:
FD_ISSET(s, *set)/*Проверяет входит ли сокет в набор*/Код:
WSADATA WSAData;В любом случае connect() остается неблокирющим. Но его можно перевести в неблокирющий режим функцией fcntl() Код:
int flags = fcntl(s, F_GETFL, 0);П.П.С Прошу строго не судить и высказывать свои замечания. |
Цитата:
Shaitan-Devil, мало материала, никаких тонкостей, таких статей очень много в нете. Развивай и расширяй статью = ) + Added: Здесь будет в самый раз :) |
Цитата:
|
Цитата:
|
Не понял - а при чем тут Делфи? :)
|
Пришел товарищ DVD-RW и заявил, что статья гавно, потому что про delphi :(
|
про НЕБЛОКИРУЕМЫЕ сокеты в сети действительно информации немного
а статья нормальная как основа пойдет =) |
Дельфи? оО я чтото пропустил в развитии Яп :(
*Пошел учить Delphi++ |
| Время: 16:19 |