Главная страница
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.034 c
2-1123678374
Relaxxx
2005-08-10 16:52
2005.09.18
Как суммировать время?


4-1122307063
dima_shapkin
2005-07-25 19:57
2005.09.18
CM_CANCELMODE


1-1124737437
Phantomouse
2005-08-22 23:03
2005.09.18
TWebBrowser и Flash


3-1123565477
Shopot
2005-08-09 09:31
2005.09.18
ADO Query и SQL Server. Проблемы с памятью.


14-1124697571
alles
2005-08-22 11:59
2005.09.18
Нужна утилитка