整个广域网内肯定有IP地址完全相同的终端,是不是只能通过设置HOST连接?怎么设?

解决方案 »

  1.   

    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;
      

  2.   

    Wally_wu(韦利) :
    这样能够让通过服务器连上网的,不同电脑建立点对点连接吗?就像QQ中一样?
      

  3.   

    整个广域网内没有IP地址完全相同的终端,你要知道﹐IP是网络是唯一的﹐所以不需要通过HOST来实现点对点连接连﹐由于IP地址难以记住﹐所以引进Host,它其实是IP的别名。当你想在网络上寻找一台主机或终端时﹐虽然你可以是在浏览器上输入一个Host 名﹐但实际上是通过DSN转化成IP来找到目的计算器的。
      

  4.   

    通过服务器连接互联网的各台电脑的IP地址也不同吗?这绝对不可能吧?那么两台非服务器之间,应该是不可能直接利用IP连接的吧?是不是也不可能用Host连接了?
    看来只有通过服务器转一种方法了。
      

  5.   

    用次函数就可以完成计算机名到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;
      

  6.   

    function LocalIP:string; 
    typeTaPInAddr = array [0..10] of PInAddr;PaPInAddr = ^TaPInAddr;varphe : PHostEnt;pptr : PaPInAddr;Buffer : array [0..63] of char;I : Integer;GInitData : TWSADATA;beginWSAStartup($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 beginresult:=StrPas(inet_ntoa(pptr^[I]^));Inc(I);end;WSACleanup;end;