Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Send, Recev, на WinAPI помогите с примерами WinSock [D6, Win95/98, WinME, Win2k]


BlackLord ©   (2002-03-11 16:06:00) 

Господа программисты ответте на один вопрос.

Ниже приведена программа без использования VCL, как получать и отправлять сообщения от Client к Server, не вводя при этом TWndClass?

Как отлавливать Сообщения Windows?

Какой класс у ClientSocket?

Приведите Plz. пример использование recev, recevfrom, send, sendto;
Но желательно не однаразового действия, а по какому либо событию.

program MinClient;

uses
Windows,Messages, WinSock;

var Message:TMsg;
CLS:TSocket;
ID:WSADATA;
AddrCLS:TSockAddrIn;

procedure IntCLS;
begin
WSAStartup($101,ID);
CLS:=socket(PF_INET,SOCK_STREAM,0);
AddrCLS.sin_family:=PF_INET;
AddrCLS.sin_port:=htons(21);
AddrCLS.sin_addr.S_addr:=inet_addr(PChar("100.100.100.1"));
connect(CLS,AddrCLS,SizeOf(AddrCLS));
end;

begin

IntCLS;

while GetMessage (Message, 0, 0, 0) do begin
TranslateMessage (Message);
DispatchMessage (Message);
end;
Halt (Message.wParam);
end.


digitman   (2002-03-15 13:14:00) [1]

вот, к примеру, фрагмент использования recv() из того же scktcomp.pas. Фрагменты использования прочих интересующих тебя WSAPI-вызовов там тоже имеются, причем - рабочие.

Ну, и чем не пример ?
и что в нем тебе не понятно в нем ?


function TCustomWinSocket.ReceiveBuf(var Buf; Count: Integer): Integer;
var
ErrorCode: Integer;
begin
Lock;
try
Result := 0;
if (Count = -1) and FConnected then
ioctlsocket(FSocket, FIONREAD, Longint(Result))
else begin
if not FConnected then Exit;
Result := recv(FSocket, Buf, Count, 0);
if Result = SOCKET_ERROR then
begin
ErrorCode := WSAGetLastError;
if ErrorCode <> WSAEWOULDBLOCK then
begin
Error(Self, eeReceive, ErrorCode);
Disconnect(FSocket);
if ErrorCode <> 0 then
raise ESocketError.CreateResFmt(@sWindowsSocketError,
[SysErrorMessage(ErrorCode), ErrorCode, "recv"]);
end;
end;
end;
finally
Unlock;
end;
end;


Velocity   (2002-03-15 12:54:00) [2]

Уфф. Совсем это работать не будет. На http://www.sockaddr.comесть исходники (сишные) клиента - вот там и посмотри


Polevi   (2002-03-11 19:33:00) [3]

чтобы "отлавливать сообщения Windows" нужно окно создать


Наверх

Титульная страница Поиск, карта сайта Написать письмо