Здравствуйте, butcher, Вы писали:
B>Здравствуйте, stream15, Вы писали:
S>>В приведенном ниже коде событие hConnectedEvt никогда S>>не устанавливается и WSAWaitForMultipleEvents(...) всегда
B>Приведите полный код, возможно тогда станет ясно..
Ниже я привожу полный код, но ситуация поменялась
на противоположную, которая ничуть не лучше.
Вышеописанный вариант мне воспроизвести не удалось.
У меня установлен firewall, может он как — то
вмешивался, хотя я его отключал, может не всегда...
Установлен так же локальный IIS, но я его
на всякий случай остановил.
1. Компьютер не подключен ни к сети ни к Inet.
Я указываю локальный IP адрес и порт, который
никто не прослушивает. При этом
DWORD dwRes = WSAWaitForMultipleEvents(1, &hConnectedEvt, FALSE, 5000, FALSE);
пролетает, как будто hConnectedEvt взведен до входа в ожидание.
Если я запускаю локальный сервер, слушающий порт 1111, то
устанавливается соединение и WSAWaitForMultipleEvents(...)
уже "пролетает" на законных основаниях.
Вместо локального я могу указать любой адрес, ситуация не меняется.
2. Компьютер подключен к Inet. В этом случае если указан не
локальный произвольный адрес, WSAWaitForMultipleEvents(...)
завершается по тайм — ауту, как и положено.
3. Опять же, если вместо FD_CONNECT использовать FD_WRITE,
все работает как надо.
Юрий
// ScaleCons.cpp : Defines the entry point for the console application.
//
#include "stdafx.h"
#include <winsock2.h>
#include <windows.h>
#include <iostream>
#include <conio.h>
#include <crtdbg.h>