有人說現在的程序員成了組裝工人,其實很有道理,利用控件模塊+少量代碼就可以實現,delphi 5.0提供了豐富的internet控件,利用TCP/IP 客戶端-服務端就可以解決問題。關鍵的控件是ServerSocket,我們模仿IPhunter的界面用一個button1(按鈕),一個combobox1(用於顯示),這三個最基本的控件放置到空白窗體上就可以開始寫代碼了。
首先,這個combobox1必須能顯示多個IP,我們定一個變量y來累加combobox1.items[y],
var y:integer;
我們的思路如下,當ServerSocket活動的port(端口)收到基於TCP/IP協議的連結請求時候,返回對方的IP值,傳遞給combobox顯示出來。由button1控制ServerSocket的激活,也就是打開關閉端口。
我們在ServerSocket的On ClientConnect事件中加入一下代碼
procedure TForm1.ServerSocket11ClientConnect(Sender: TObject;
Socket: TCustomWinSocket);
begin
combobox1.Items.Insert(y,);//加入一條空紀錄
combobox1.Items[y]:=socket.RemoteAddress;//獲取對方的IP
label1.Text:=共捕獲+inttostr(y+1)+個IP;//用一個標簽來顯示一共抓了多少IP
y:=y+1;//計數變量加1
socket.Close;
end;
現在,將button1的caption屬性設置為 開始,在它的單擊事件中加入以下代碼
procedure TForm1.SpeedButton7Click(Sender: TObject);
begin
if speedbutton7.Caption=開始 then
begin
serversocket11.Port:=80;//這句可以在serversocket屬性中設定,捕獲浏覽器的連接
ServerSocket11.Active:=true;//激活端口
speedbutton7.Caption:=停止;
end
else
begin
serversocket11.Active:=false;//關閉端口
speedbutton7.Caption:=開始;
combobox1.Clear;//結束捕獲,清空歷史信息
y:=0;//計數變量復位
end;
end;