![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
OnRecv и прочее... [D6, D7, NT4, Win2k, WinXP]
доброжелатель © (2004-08-20 20:47:00)Добрый всем вечер.
Я решил не прибегать к помощи чужих нароботок и не использовать чужие компоненты и библиотеки, заодно немного повысить свои познания в области winsock.
Накатал такой интересный код (сейчас может и не работать, писал не память). Который прекрасно работает.
Если я этот весь код запихиваю в собственный класс и уже с ним провожу "испытания".
Но меня заинересовал один момент... Как в "чужих наработках", "генерятся": property onconnect, property ondisconnect, property onerror, property onrecv? (названия придуманы, но думаю смысл понятен)
Если первые три (property onconnect, property ondisconnect, property onerror) я немного представляю, как делается, но вот как с onrecvу меня воображения не хватает, как это сделать.
Не могли бы вы с нижележащим кодом (или аналогичным по сложности) в классе, "генерить" property onconnect, property ondisconnect, property onerror, property onrecvну или если слишком накладно, только property onrecv.
И ещё, не предлагайте "подсмотреть" нужное мне в чужих компонентах и библиотеках. На сегодняшний день мне проблематично изучить из-за нехватки времени и тем, что там всё слишком "накручено" и для моего слишком простого класса не понятно.
var
sWsd :WSAData;
sClient : TSOCKET;
sServ : sockaddr_in;
sBuffer : array [0..1024] of char;
begin
sBuffer := 'GET / HTTP/1.0'+#13#10#13#10;
WsaStartup (MAKEWORD (2,2), sWsd);
sClient := socket (AF_INET, SOCK_STREAM, IPPROTO_IP);
ZeroMemory(@sServ, SizeOf(sServ));
sServ.sin_family := AF_INET;
sServ.sin_addr := in_addr (inet_addr('127.0.0.1'));
sServ.sin_port := htons(80);
if connect(sClient, sServ, SizeOf(sServ)) <> SOCKET_ERROR then begin
if send (sClient,sBuffer, strlen (sBuffer), 0) <> SOCKET_ERROR then begin
while recv (sClient, sBuffer, 1024, 0) <> 0 do begin
Application.ProcessMessages;
ZeroMemory (@sBuffer, Length (sBuffer));
end;
end;
end;
closesocket (sClient);
WSACleanup;
end;
Очень надеюсь на ваше понимание и помощь! Любое инфо подкрепите простеньким примером, если не сложно.
:)
Digitman (2004-08-23 08:38:00) [1]
> доброжелатель (21.08.04 18:37) [2]
> Получается помощи ждать не стоит
"Спасение утопающих - дело рук самих утопающих"(с)
> примера я точно не получу?
загляни в scktcomp.pas, там ты найдешь пример
> можно без примера обьяснить?
http://book.itep.ru
см. раздел "Winsock"
доброжелатель (2004-08-21 18:37:00) [2]Verg
Получается помощи ждать не стоит. Но уж примера я точно не получу? Тогда может можно без примера обьяснить?
А вообщето в жизни гораздо больше противоречий в отличие от моего скромного класса...
Verg (2004-08-21 11:59:00) [3]
> Любое инфо подкрепите простеньким примером, если не сложно.
А разве это и не будет "посмотреть чужие компоненты и библиотеки"?
Как-то слишком много всяких противоречивых условий на которых вы соизволили бы принять нашу скромную помощь, в оказании которой вам все мы очень нуждаемся.
Вдруг наши простенькие примеры покажутся вам слишком нарученными и непонятными для вашего "слишком простого класса".... Не дай-то Бог....