
30.01.2010, 22:56
|
|
Участник форума
Регистрация: 20.04.2007
Сообщений: 174
С нами:
10030823
Репутация:
149
|
|
попробуй через WinSock:
Код:
const
mstimeout = 15000;
buffsize = 1024;
crlf = #13#10;
function fWSRecv(wHost, wRequest: string; wPort: word = 80): integer;
var
hSocket: TSocket;
wsData: TWSAData;
hHost: PHostEnt;
hAddr: TSockAddrIn;
hTimeout: TTimeVal;
iRead: integer;
hBuffer: array[0..buffsize] of char;
begin
WSAStartup($202, wsData);
hSocket := socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);
hHost := gethostbyname(PChar(wHost));
hAddr.sin_family := AF_INET;
hAddr.sin_port := htons(wPort);
hAddr.sin_addr := pinaddr(hHost^.h_addr^)^;
hTimeout.tv_usec := 0;
hTimeout.tv_sec := mstimeout;
setsockopt(hSocket, SOL_SOCKET, SO_RCVTIMEO, @hTimeout, sizeof(ttimeval));
connect(hSocket, hAddr, SizeOf(hAddr));
hData := '';
Send(hSocket, wRequest[1], length(wRequest), 0);
AssignFile(NewFile, FileName);
Rewrite(NewFile, 1);
while (TRUE) do
begin
FillChar(hBuffer, SizeOf(hBuffer), 0);
iRead := Recv(hSocket, hBuffer, length(hBuffer), 0);
BlockWrite(NewFile, hBuffer, iRead);
if (iRead <= 0) then break;
end;
CloseFile(NewFile);
CloseSocket(hSocket);
WSACleanup;
result := 0;
end;
Последний раз редактировалось GlooK; 31.01.2010 в 00:12..
|
|
|