Код:
uses
Windows,
WinSock;
var Sock: TSocket;
addr: sockaddr_in;
wsa: wsadata;
host: PHostEnt;
Get: string;
avail_bytes: integer;
buf: pointer;
fset: TFDset;
label 2, 3;
begin
if WSAStartup(MAKEWORD(1, 1), wsa) <> 0 then ExitProcess(0);
Sock := socket(AF_INET, SOCK_STREAM, 0);
if Sock = INVALID_SOCKET then goto 3;
addr.sin_family := PF_INET;
addr.sin_port := htons(80);
host:= GetHostByName('antichat.net'); //заменишь на свой
PInteger(@addr.sin_addr.S_addr)^:= PInteger(host.h_addr^)^;
if connect(Sock, addr, sizeof(addr)) <> 0 then goto 2;
Get:= 'GET http://antichat.net HTTP/1.0' + #13#10 + #13#10; //заменишь на свой
send(Sock, PChar(Get)^, Length(Get), 0);
avail_bytes:= 0;
FD_ZERO(fset);
FD_SET(Sock, fset);
if select(0, @fset, nil, nil, nil) <= 0 then goto 2;
ioctlsocket(Sock, FIONREAD, avail_bytes);
buf:= VirtualAlloc(nil, avail_bytes, MEM_COMMIT, PAGE_READWRITE);
recv(Sock, buf^, avail_bytes, 0);
MessageBox(0, buf, nil, 0); //buf - наши данные
VirtualFree(buf, 0, MEM_RELEASE);
2: CloseSocket(Sock);
3: WSACleanUp();
end.
|