得自IP的問題? |
答題得分者是:banson1716
|
dangerwang
一般會員 發表:3 回覆:3 積分:1 註冊:2002-08-09 發送簡訊給我 |
|
jaya
初階會員 發表:9 回覆:70 積分:30 註冊:2002-05-22 發送簡訊給我 |
|
banson1716
高階會員 發表:55 回覆:182 積分:167 註冊:2002-04-14 發送簡訊給我 |
參考看看是不是你的問題
function GetIP:string;//自制顯示IP地址的函數
type
TaPInAddr = array [0..10] of PInAddr;
PaPInAddr = ^TaPInAddr;
var
phe:PHostEnt;
pptr:PaPInAddr;
Buffer:array [0..63] of char;
I:Integer;
GInitData:TWSADATA;
begin
WSAStartup($101,GInitData);
Result := '';
GetHostName(Buffer,SizeOf(Buffer));
phe := GetHostByName(buffer);
if phe = nil then Exit;
pptr := PaPInAddr(Phe^.h_addr_list);
I := 0;
while pptr^[I] <> nil do
begin
result := StrPas(inet_ntoa(pptr^[I]^));
Inc(I);
end;
WSACleanup;
end; {$R *.dfm} procedure GetHostInfo(var Name, Address: string);
var
WSAData: TWSAData;
HostEnt: PHostEnt;
begin
WSAStartup(2, WSAData);
SetLength(Name, 255);
Gethostname(PChar(Name), 255);
SetLength(Name, StrLen(PChar(Name)));
HostEnt := gethostbyname(PChar(Name));
with HostEnt^ do
Address := Format('%d.%d.%d.%d',[Byte(h_addr^[0]),Byte(h_addr^[1]),Byte(h_addr^[2]), Byte(h_addr^[3])]);
WSACleanup;
end; function TForm1.LocalIP: string;
type
TaPInAddr = array [0..10] of PInAddr;
PaPInAddr = ^TaPInAddr;
var
phe: PHostEnt;
pptr: PaPInAddr;
Buffer: array [0..63] of char;
i: Integer;
GInitData: TWSADATA;
begin
WSAStartup($101, GInitData);
Result := '';
GetHostName(Buffer, SizeOf(Buffer));
phe :=GetHostByName(buffer);
if phe = nil then Exit;
pptr := PaPInAddr(Phe^.h_addr_list);
i := 0;
while pptr^[i] <> nil do
begin
result:=StrPas(inet_ntoa(pptr^[i]^));
Inc(i);
end;
WSACleanup;
end; procedure TForm1.Button1Click(Sender: TObject);
var
WSAData: TWSAData;
HostEnt: PHostEnt;
sComputerName, sIP, S0: string;
begin
sComputername:=edit1.text;
WSAStartup(2, WSAData);
HostEnt := gethostbyname(PChar(sComputerName));
if HostEnt <> nil then
begin
with HostEnt^ do
sIP := Format('%d.%d.%d.%d', [Byte(h_addr^[0]), Byte(h_addr^[1]), Byte(h_addr^[2]), Byte(h_addr^[3])]);
end;
WSACleanup;
edit2.text:=sIP; edit3.text:= GetIP;
edit4.text:= LocalIP;
end; end.
|
luckfox
一般會員 發表:34 回覆:40 積分:24 註冊:2002-10-15 發送簡訊給我 |
//使用winsock
#include "winsock2.h"
USELIB("w2_32.lib"); #define StrLen 255
//-------------------------------------------
LPHOSTENT lpHostEnt;
char sHostName[StrLen];
struct in_addr MyInAddr;
WSADATA WSAData; if(WSAStartup(0x0002,&WSAData)!=ERROR_SUCCESS) return -1;
gethostname(sHostName,StrLen);//取得本機名稱
Label2->Caption=AnsiString(sHostName);
lpHostEnt=gethostbyname(sHostName); memcpy(&MyInAddr,lpHostEnt->h_addr_list[0],sizeof(struct in_addr));//取得本機的第一個ip,如果有多個ip,可用loop來取之 Label4->Caption=AnsiString(inet_ntoa(MyInAddr));
|
Jack0323
初階會員 發表:22 回覆:70 積分:28 註冊:2002-03-13 發送簡訊給我 |
|
shinhrn
中階會員 發表:54 回覆:165 積分:83 註冊:2002-06-05 發送簡訊給我 |
|
bear28
一般會員 發表:44 回覆:53 積分:19 註冊:2002-09-10 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |