test.pas
上传用户:hbtcygglw
上传日期:2007-01-07
资源大小:281k
文件大小:4k
- unit test;
- interface
- uses
- Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
- StdCtrls, Db, DBTables, Grids, DBGrids,data,winsock;
- type
- TForm1 = class(TForm)
- Button1: TButton;
- Label1: TLabel;
- AddrTable: TTable;
- DataSource1: TDataSource;
- AddrTableSTARTIP: TStringField;
- AddrTableENDIP: TStringField;
- AddrTableCOUNTRY: TStringField;
- AddrTableLOCAL: TStringField;
- AddrTableTHANK: TStringField;
- Button2: TButton;
- Edit1: TEdit;
- Button3: TButton;
- ListBox: TListBox;
- Button4: TButton;
- Button5: TButton;
- procedure Button1Click(Sender: TObject);
- procedure Button2Click(Sender: TObject);
- procedure Button3Click(Sender: TObject);
- procedure FormCreate(Sender: TObject);
- procedure Button4Click(Sender: TObject);
- procedure Button5Click(Sender: TObject);
- private
- { Private declarations }
- FSocket:TSocket;
- Loop:Boolean;
- public
- { Public declarations }
- end;
- //const
- //SOCK_RAW=3;
- //IPPROTO_RAW=255;
- var
- Form1: TForm1;
- implementation
- {$R *.DFM}
- uses info;
- function StrToIp(str:string):DWORD;
- var
- s:string;
- l,i,parse:Integer;
- adr:array [0..3] of DWORD;
- begin
- parse:=0;
- l:=length(str);
- for i:=1 to l+1 do
- begin
- if(i<=l) and (str[i]<>'.')then
- begin
- s:=s+str[i];
- end
- else
- begin
- adr[parse]:=StrToIntDef(s,0);
- Inc(parse);
- s:='';
- end;
- end;
- Result:=(adr[0]shl 24)or(adr[1] shl 16) or(adr[2] shl 8) or adr[3];
- end;
- function IPEqu(ip1,ip2:string):Boolean;
- begin
- Result:=(StrToIp(ip1)=StrToIp(ip2));
- end;
- procedure TForm1.Button1Click(Sender: TObject);
- var
- f:File of TIPInfo;
- info:TIPInfo;
- begin
- AssignFile(f,'IP.dat');
- Rewrite(f);
- AddrTable.Open;
- while not AddrTable.Eof do
- begin
- info.StartIp:=AddrTable.FieldByName('StartIp').AsString;
- info.EndIp:=AddrTable.FIeldBYName('EndIp').AsString;
- info.Country:=AddrTable.FieldByName('Country').AsString;
- info.Location:=AddrTable.FieldByName('LOCAL').AsString;
- Write(f,info);
- AddrTable.Next;
- end;
- AddrTable.Close;
- CloseFile(f);
- end;
- procedure TForm1.Button2Click(Sender: TObject);
- begin
- LoadIPInfo('ip.dat');
- ShowMessage(IntToStr(IpInfoCnt));
- end;
- procedure TForm1.Button3Click(Sender: TObject);
- var
- IpInf:TIPInfo;
- begin
- IpInf:=FindIPInfo(Edit1.Text);
- Edit1.Text:=IpInf.Country+IpInf.Location;
- end;
- procedure TForm1.FormCreate(Sender: TObject);
- begin
- LoadIPInfo('ip.dat');
- end;
- procedure TForm1.Button4Click(Sender: TObject);
- var
- d:TWSAData;
- val:Boolean;
- addr:TSockAddr;
- sz:Integer;
- buf:array [0..2048] of char;
- begin
- WSAStartup(2,d);
- FSocket:=socket(AF_INET,SOCK_RAW,IPPROTO_UDP);
- if(FSocket=INVALID_SOCKET)then
- begin
- ShowMessage('socket error:'+IntToStr(GetLastError));
- end;
- val:=True;
- {if(setsockopt(FSocket,SOl_SOCKET,SO_REUSEADDR,@val,sizeof(val))=SOCKET_ERROR)then
- begin
- ShowMessage('setsockopt error:'+IntToStr(GetLastError));
- end;}
- addr.sin_family:=AF_INET;
- addr.sin_port:=4000;
- addr.sin_addr.s_addr := INADDR_ANY;
- if(bind(FSocket,addr,sizeof(addr))=SOCKET_ERROR)then
- begin
- ShowMessage('setsockopt error:'+IntToStr(GetLastError));
- end;
- sz:=sizeof(addr);
- button4.enabled:=false;
- button5.enabled:=true;
- Loop:=True;
- {while(Loop)do
- begin
- recvfrom(FSocket,buf,2048,0,addr,sz);
- ListBox.Items.add(buf);
- Application.ProcessMessages;
- end;}
- end;
- procedure TForm1.Button5Click(Sender: TObject);
- begin
- Loop:=False;
- closesocket(FSOCKET);
- WSACleanup;
- button4.enabled:=true;
- button5.enabled:=false;
- end;
- end.