Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2005.09.18;
Скачать: CL | DM;

Вниз

Создание и обработка событий сокета.   Найти похожие ветки 

 
Новичек ©   (2005-05-29 20:29) [0]

Уважаемые программеры, дайте, пожалуйста, рабочий пример создания и обработки событий сокета, а то я уже в ступоре: не идет, хоть стреляйся.

Вот код:

program Project1;
uses
WinSock2, ScktComp, Dialogs, SysUtils;

var
MySocketInfo: TWSAData;
ErrorCode: Integer;
MySocket: TSocket;
MySocketAddr: TSockAddr;
MySocketPort: Integer;
hEvent, hConnectEvent: THandle;
hEventObject: TWSANetworkEvents;

begin
ErrorCode := WSAStartup($0101, MySocketInfo);

MySocket := Socket(AF_INET, SOCK_STREAM, IPPROTO_IP);
MySocketAddr.sin_family := AF_INET;
MySocketAddr.sin_addr.s_addr := Inet_Addr("127.0.0.1");
MySocketAddr.sin_port := htons(1234);
FillChar(MySocketAddr.sin_zero, SizeOf(MySocketAddr.sin_zero), 0);
if Connect(MySocket, @MySocketAddr, SizeOf(MySocketAddr)) <> 0 then ShowMessage("Коннекту жопа");

hEventObject.lNetworkEvents := WSACreateEvent();
WSAEventSelect(MySocket, hEventObject.lNetworkEvents, FD_CONNECT);
ShowMessage(IntToStr(hEventObject.lNetworkEvents));

WSAWaitForMultipleEvents(1, @hEventObject.lNetworkEvents, FALSE, WSA_INFINITE, FALSE)));

WSAEnumNetworkEvents(MySocket, hEventObject.lNetworkEvents, @hEventObject.lNetworkEvents);
end.


Как я понимаю, этот код создаёт сокет, затем говорим ОС, что желаем ожидать событие FD_CONNECT от MySocket, после чего с помощью функции WSAWaitForMultipleEvents ожидаем наступления оного. Так вот, не ждёт-с!!! Функция завершается с кодом 0!!! (То бишь, успешно, дождались)
Я для чистоты эксперимента IP давал разные - эффект один  
Причём, никакого сервера у меня нет.
Где грабли?!!! Помогите, други!!!


 
Digitman ©   (2005-05-30 08:17) [1]

сначала WSAEventSelect, а уж только потом connect()


 
Новичек ©   (2005-05-30 08:22) [2]

И всё?!!! Мда... А я уж тут обругал Гейтса всякими нехорошими словами :-)
Спасибо огромное.


 
Digitman ©   (2005-05-30 09:01) [3]


> Новичек ©   (30.05.05 08:22) [2]
> И всё?


все или не все - не знаю, в прочий твой код не вникал.

просто нарушение последовательности вызова этих ф-ций в твоем коде сразу бросается в глаза



Страницы: 1 вся ветка

Текущий архив: 2005.09.18;
Скачать: CL | DM;

Наверх




Память: 0.47 MB
Время: 0.038 c
6-1117455483
Flame
2005-05-30 16:18
2005.09.18
proxy


14-1124890654
TStas
2005-08-24 17:37
2005.09.18
За сколько времени на самом деле включают Стрим?


4-1122356794
Jupiter
2005-07-26 09:46
2005.09.18
Текущая дата в винде


1-1125236306
X-shadow
2005-08-28 17:38
2005.09.18
Модульность программы


9-1116598261
Кефир87
2005-05-20 18:11
2005.09.18
Поворот объекта. Очень просто. Опять туплю...