информационная безопасность
без паники и всерьез
 подробно о проектеRambler's Top100
Сетевые кракеры и правда о деле ЛевинаSpanning Tree Protocol: недокументированное применениеЗа кого нас держат?
BugTraq.Ru
Русский BugTraq
 Анализ криптографических сетевых... 
 Модель надежности двухузлового... 
 Специальные марковские модели надежности... 
 Microsoft Authenticator прекращает... 
 Очередное исследование 19 миллиардов... 
 Оптимизация ввода-вывода как инструмент... 
главная обзор RSN блог библиотека закон бред форум dnet о проекте
bugtraq.ru / форум / programming
Имя Пароль
если вы видите этот текст, отключите в настройках форума использование JavaScript
ФОРУМ
все доски
FAQ
IRC
новые сообщения
site updates
guestbook
beginners
sysadmin
programming
operating systems
theory
web building
software
hardware
networking
law
hacking
gadgets
job
dnet
humor
miscellaneous
scrap
регистрация





Легенда:
  новое сообщение
  закрытая нитка
  новое сообщение
  в закрытой нитке
  старое сообщение
Дело в том... 28.10.01 10:48  Число просмотров: 962
Автор: Лamo Статус: Незарегистрированный пользователь
<"чистая" ссылка>
ХаХаХа :)) ну ты даёшь!!!
если ты не подрублен к инету,
то вопервых gethostbyname будет возвращать NULL,
значащее то, что соединения с инетом нету или хост не доступен, а терь подумай что будет если ты дальше будешь юзать указатель на HOSTENT == NULL :)))
<programming>
Fd_connect 27.10.01 11:22  
Автор: Heromantor Статус: Незарегистрированный пользователь
<"чистая" ссылка>
Что-то я не пойму когда посылается это сообщение или что-то там еще. Если я сделаю WSAEventSelect(s,events,FD_CONNECT) а потом connect то если я не порублен к инету то ОНО все равно устанавливается независимо от того сконектился я или нет, в принципе для этого я давно уже пользую FD_WRITE но интересно узнать что-же такое с FD_CONNECT?

Прошу прощения за каламбур
Fd_connect 27.10.01 14:02  
Автор: Л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

И если надо, не забудь выходить из лупа брейком
Это-то я знаю, проблема в другом. 27.10.01 14:40  
Автор: Heromantor Статус: Незарегистрированный пользователь
<"чистая" ссылка>
А проблема в том-что, если я делаю WSAEventSelect на одно событие FD_CONNECT, и пускаю прогу, то устанавливаеться event низависимо от того законектился я или нет, причем WaitForMultipleObjects вылетает сразу и не ждет тайм-аута т.е. event усатанавливается сразу после connect? Че это такое и почему на хрен мне вызыватьenumесли это не надо т.к. до конекта никакие события с сокетом происходить не могут!
Это-то я знаю, проблема в другом. 27.10.01 15:15  
Автор: Лamo Статус: Незарегистрированный пользователь
<"чистая" ссылка>
Чо то я не понял что ты хочешь,
Кароче, для чего нужен FD_CONNECT - Фишка в том,
что када ты вызываешь WSAEventSelect
то какимто образом сокет переходит в не блокирующее состояние, и connect выполняется практически всегда,
и уже дальше, если соединение установлено, то как раз срабатывает событие FD_CONNECT значащее то, что сокет готов к приёму или передаче данных,
а если, к примеру, не возможно поключица на данный хост с некоторым портом, - ну порт закрыт,
то срабатывает таймаут, и событие FD_CONNECT не происходит
Дело в том... 27.10.01 16:16  
Автор: Heromantor Статус: Незарегистрированный пользователь
<"чистая" ссылка>
если соединение установлено, то как раз
> срабатывает событие FD_CONNECT значащее то, что сокет готов
> к приёму или передаче данных,
> а если, к примеру, не возможно поключица на данный хост с
> некоторым портом, - ну порт закрыт,
> то срабатывает таймаут, и событие FD_CONNECT не происходит

Во-во! так и должно быть, но если я не подрублен к инету в настоящий момент то событие все равно устанавливается в signaled, причем моментально после connect?! Вот в чем проблема-то!
Дело в том... 28.10.01 10:48  
Автор: Лamo Статус: Незарегистрированный пользователь
<"чистая" ссылка>
ХаХаХа :)) ну ты даёшь!!!
если ты не подрублен к инету,
то вопервых gethostbyname будет возвращать NULL,
значащее то, что соединения с инетом нету или хост не доступен, а терь подумай что будет если ты дальше будешь юзать указатель на HOSTENT == NULL :)))
а сокет какой ? UDP или TCP ? 27.10.01 17:23  
Автор: ggg <ggg> Статус: Elderman
<"чистая" ссылка>
С UDP все ясно, TCP в том-то и дело?!@ 27.10.01 18:44  
Автор: Heromantor Статус: Незарегистрированный пользователь
<"чистая" ссылка>
С UDP все ясно, TCP в том-то и дело?!@ 27.10.01 22:08  
Автор: ggg <ggg> Статус: Elderman
<"чистая" ссылка>
наверно это особенность маздайной реализации
типа если законнектиться невозможно, то и не зачем ждать приложению
а что говорит getsockopt(SO_ERROR) ?
1




Rambler's Top100
Рейтинг@Mail.ru


  Copyright © 2001-2025 Dmitry Leonov   Page build time: 0 s   Design: Vadim Derkach