
10.05.2010, 15:36
|
Прохожий
|
|
Регистрация: 05.05.2010
Сообщения: 5
Репутация: 10
|
|
Первая программа
Привет люди) Написал тут свою первую программку, без интерфейса, которая отправляет GET запрос на сайт, указанный в файле, вроде компилиться, работает, но если ставлю в автозапуск, то она ошибку выдает. Хотя и без автозапуска тоже ошибку выдает, но не сразу (эт на XP), на windows 7 не выдает, но автозапуск на семерке ещё не пробовал. Прикрепляю исходник. Писал на delphi 7. Помогите пожалуйста) исправьте, если что не так
Код:
program httpget;
uses
SysUtils,
windows,
winsock;
var
i: integer;
myFile: TextFile;
mass: Array[1..4] of string;
//{$apptype console}
function HostToIP(Name: string): string; forward;
procedure getsend(ip:string; port:integer; host:string; path:string);
var
WSAData1: TWSAData;
SockAddr1:TSockAddr;
Socket1: TSocket;
Buffer1: string;
begin
if ip = ' ' then
ip := HostToIP(host);
if WSAStartup(MAKEWORD(2,2), WSAData1)=0 then begin
Socket1:=Socket(AF_INET,SOCK_STREAM,0);
if Socket1<>INVALID_SOCKET then begin
SockAddr1.sin_family:=AF_INET;
SockAddr1.sin_addr.S_addr:=inet_addr(PChar(ip));
SockAddr1.sin_port:=htons(port);
if Connect(Socket1,SockAddr1,SizeOf(SockAddr1))=0 then begin
if host <> ' ' then
host := 'Host: '+host+#13#10;
Buffer1:='GET /'+path+' HTTP/1.1'+#13#10+host+
'Connection: close'+#13#10+
#13#10;
send(Socket1,Buffer1[1],Length(Buffer1),0);
CloseSocket(Socket1);
end;
end;
end;
end;
function HostToIP(Name: string): string;
var
ip : string;
wsdata : TWSAData;
hostName : array [0..255] of char;
hostEnt : PHostEnt;
addr : PChar;
begin
WSAStartup ($0101, wsdata);
try
gethostname (hostName, sizeof (hostName));
StrPCopy(hostName, Name);
hostEnt := gethostbyname (hostName);
if Assigned (hostEnt) then
if Assigned (hostEnt^.h_addr_list) then begin
addr := hostEnt^.h_addr_list^;
if Assigned (addr) then begin
ip := Format ('%d.%d.%d.%d', [byte (addr [0]),
byte (addr [1]), byte (addr [2]), byte (addr [3])]);
Result := ip;
end
else
Result := '';
end
else
Result := ''
else begin
Result := '';
end;
finally
WSACleanup;
end
end;
begin
//sleep(60000);
i := 0;
AssignFile(myFile, 'dann.bin');
Reset(myFile);
while not Eof(myFile) do
begin
i := i+1;
ReadLn(myFile, mass[i]);
// WriteLn(mass[i]);
end;
CloseFile(myFile);
while 1 = 1 do
begin
getsend(mass[1], StrToInt(mass[2]), mass[3], mass[4]);
sleep(30000);
end;
end.
|