Вниз
Скачать: 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 вся ветка

Скачать: CL | DM;



Память: 0.45 MB
Время: 0.026 c
2-1123936347
RomanBishkek
2005-08-13 16:32
2005.09.18
Как можно обновить одну запись через Query


1-1124960267
kyn66
2005-08-25 12:57
2005.09.18
Как привязаться к координатам картинки ?


1-1124886439
Sidex
2005-08-24 16:27
2005.09.18
Как перемещать две формы ОДНОВРЕМЕННО?


14-1124710103
КК
2005-08-22 15:28
2005.09.18
SHS1.EXE - что это


14-1124382322
Vudu
2005-08-18 20:25
2005.09.18
Opera и глюк




   Наверх