关于网友提出的“ 怎样获得本地IP地址或者HOST,以便通过服务器,建立电脑的点对点连接?”问题疑问,本网通过在网上对“ 怎样获得本地IP地址或者HOST,以便通过服务器,建立电脑的点对点连接?”有关的相关答案进行了整理,供用户进行参考,详细问题解答如下:
问题: 怎样获得本地IP地址或者HOST,以便通过服务器,建立电脑的点对点连接?描述:
整个广域网内肯定有IP地址完全相同的终端,是不是只能通过设置HOST连接?怎么设?
解决方案1:
用次函数就可以完成计算机名到IP地址的转换
function nametoip(name:string):string;
var
couputername:string;
hostent:phostent;
begin
couputername:=edit1.Text;
hostent:=gethostbyname(pchar(couputername));
if hostent<>nil then
begin
with hostent^ do
result:=format('%d.%d.%d.%d',[byte(h_addr^[0]),byte(h_addr^[1]),byte(h_addr^[2]),byte(h_addr^[3])]);
end;
end;
function 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;
function TFrmChat.HostName: String;
var
Buf: Array[0..255] of char;
GInitData: TWSADATA;
wVerReq: Word;
begin
wVerReq := MakeWord(2, 0);
WSAStartup(wVerReq, GInitData);
Result := '';
GetHostName(Buf, Sizeof(Buf));
Result := StrPas(Buf);
WSACleanup;
end;