用Socket获取本机IP地址和机器名,本程序在DELPHI2007下编译成功!
program proj3_11_CMD;
{$APPTYPE CONSOLE}
uses
Windows, SysUtils, WinSock;
var
wVersionRequested:WORD;
WsaData_x:TWSAData;
Name:array[0..255] of Char;
hostinfo:PHostEnt;
PPInAddr: ^PInAddr;
IPString: String;
begin
try
IPString :='';
wVersionRequested := MAKEWORD(2,0);
if WSAStartup(wVersionRequested,WsaData_x) = 0 then
begin
if gethostname(Name,SizeOf(Name)) = 0 then
begin
hostinfo := gethostbyname(Name);
if Assigned(hostinfo) then
begin
PPInAddr := @(PInAddr(hostinfo.h_addr_list^));
while Assigned(PPInAddr^) do
begin
IPString:=StrPas(inet_ntoa(PPInAddr^^));
Inc(PPInAddr);
end;
WriteLn('本机IP地址是:' + IPString);
WriteLn('本机的名称是:' + Name);
end;
end;
WSACleanup;
end;
ReadLn;
except
on E:Exception do
Writeln(E.Classname, ': ', E.Message);
end;
end.
program proj3_11_CMD;
{$APPTYPE CONSOLE}
uses
Windows, SysUtils, WinSock;
var
wVersionRequested:WORD;
WsaData_x:TWSAData;
Name:array[0..255] of Char;
hostinfo:PHostEnt;
PPInAddr: ^PInAddr;
IPString: String;
begin
try
IPString :='';
wVersionRequested := MAKEWORD(2,0);
if WSAStartup(wVersionRequested,WsaData_x) = 0 then
begin
if gethostname(Name,SizeOf(Name)) = 0 then
begin
hostinfo := gethostbyname(Name);
if Assigned(hostinfo) then
begin
PPInAddr := @(PInAddr(hostinfo.h_addr_list^));
while Assigned(PPInAddr^) do
begin
IPString:=StrPas(inet_ntoa(PPInAddr^^));
Inc(PPInAddr);
end;
WriteLn('本机IP地址是:' + IPString);
WriteLn('本机的名称是:' + Name);
end;
end;
WSACleanup;
end;
ReadLn;
except
on E:Exception do
Writeln(E.Classname, ': ', E.Message);
end;
end.
本文介绍了一个使用Delphi2007编写的简单程序,该程序通过Socket API实现获取本机的IP地址和主机名。代码展示了如何初始化Winsock、调用gethostname和gethostbyname函数来获取相关信息。
901

被折叠的 条评论
为什么被折叠?



