📄 upip1.pas
字号:
unit Upip1;
interface
uses
Windows,
Winsock2,
winsock;
function CheckURL(data :string): Boolean;
function GetURLPort(data :string): String;
function GetURLURL(data :string): String;
function GetIp(data :string): string;
function GetPort(data :string): string;
function getHttpDataByGetMethod(Server:String;Port:integer;Url:String):String;
implementation
function Inttostr(const Int: integer): string;
var
d, m: integer;
A:boolean;
begin
if Int=0 then
begin
result:='0';
exit;
end;
result:='';
A:= int >= 0;
if A then m := int
else m := -int;
result:='';
while m <> 0 do
begin
d := m mod 10;
m := m div 10;
Result := chr(d + 48) + Result;
end;
if not A then Result:='-'+Result;
end;
function getHttpDataByGetMethod(Server:String;Port:integer;Url:String):String; //通过GET 得到URL的返回值
var
len,s:integer;
name:sockaddr_in;
he:PHostEnt;
buf:array[0..1023]of char;
str,data:string;
wsd:WSADATA;
begin
WSAStartup($101,wsd);
s:=socket(AF_INET,SOCK_STREAM,IPPROTO_TCP);
he:=gethostbyname(PChar(Server));
FillChar(name,sizeof(name),0);
name.sin_family:=AF_INET;
name.sin_port:=htons(Port);
name.sin_addr.S_addr:=PDWORD(PDWORD(he.h_addr)^)^;
connect(s,name,sizeof(name));
str := 'GET /'+ Url +' HTTP/1.1'#13#10;
str := str + 'Referer: http://' + Server;
str := str + ':' + IntToStr(Port);
str := str + '/' + Url + #13#10;
str := str + 'User-Agent: Mozilla/4.0 (compatible; MSIE 5.01; Windows NT 5.0; MyIE 3.01)'#13#10;
str := str + 'Host: ' + Server;
str := str + ':' + IntToStr(Port);
str := str + ''#13#10;
str := str + 'Connection: Close'#13#10;
str := str + 'Cache-Control: no-cache'#13#10;
str := str + #13#10;
send(s,PChar(str)^,Length(str),0);
while true do
begin
len:=recv(s,buf,sizeof(buf),0);
if len<1 then
break;
SetString(str,buf,len);
data:=data+str;
end;
closesocket(s);
WSACleanup();
Result := data;
end;
function StrToIntDef(const S: string; Default: Integer): Integer;
var
E: Integer;
begin
Val(S, Result, E);
if E <> 0 then Result := Default;
end;
//分析上面GET函数得到的数据,剥离出IP地址出来
{function GetIp(data :string): string;
var
i: integer;
begin
i := pos(#13#10#13#10,Data);
if i>0 then
result:= Copy(Data, i+4, Length(Data)-i+4+1);
end; }
function GetIp(data :string): string;
var
i,j: integer;
data1 : string;
begin
i := pos(#13#10#13#10,Data);
if i>0 then
data1 := Copy(Data, i+4, Length(Data)-i+4+1);
Delete(data1,1,7);
j := pos(':',data1);
result := Copy(data1, 1, j-1);
end;
function GetPort(data :string): string;
var
i,j,k: integer;
data1 : string;
begin
i := pos(#13#10#13#10,Data);
if i>0 then
data1 := Copy(Data, i+4, Length(Data)-i+4+1);
Delete(data1,1,7);
j := pos(':',Data1);
k := pos('/',Data1);
result := Copy(Data1, j+1, k-j-1);
end;
function CheckURL(data :string): Boolean;
var
i: integer;
begin
i := pos(':',Data);
if i>0 then
Result := False
else
Result := True;
end;
function GetURLPort(data :string): String;
var
i: integer;
begin
i := pos(':',Data);
Delete(Data,1,i);
Result := Data;
end;
function GetURLURL(data :string): String;
var
i: integer;
begin
i := pos(':',Data);
Result := Copy(data,1,i-1);
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -