![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Создание и обработка событий сокета. [D7, WinXP]
Новичек © (2005-05-29 20:29:00)Уважаемые программеры, дайте, пожалуйста, рабочий пример создания и обработки событий сокета, а то я уже в ступоре: не идет, хоть стреляйся.
Вот код:
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 09:01:00) [1]
> Новичек © (30.05.05 08:22) [2]
> И всё?
все или не все - не знаю, в прочий твой код не вникал.
просто нарушение последовательности вызова этих ф-ций в твоем коде сразу бросается в глаза
Новичек (2005-05-30 08:22:00) [2]И всё?!!! Мда... А я уж тут обругал Гейтса всякими нехорошими словами :-)
Спасибо огромное.
Digitman (2005-05-30 08:17:00) [3]сначала WSAEventSelect, а уж только потом connect()