如何在客户端得到服务器的IP和计算机名称!
客户端有ClientSoket,服务器有ServerSoket!

解决方案 »

  1.   

    从客户端发送一个信息到服务器,表示查询服务器的IP和计算机名
    触发事件服务器端的Button1Click
    procedure TForm1.Button1Click(Sender: TObject);
    var
            Ip:string;
            Ipstr:string;
            Buffer:Array[1..32] of char;
            i:integer;
            WSData:TWSAdata;
            Host:PHostEnt;
    begin
            if WSAstartup(2,WSData)<>0 then
            begin
                ShowMessage('WS2_32.DLL初始化失败!');
                halt;
            end;
            try
                if GetHostName(@Buffer[1],32)<>0 then
                begin
                    ShowMessage('没有得到主机名!');
                    halt;
                end;
            except
                ShowMessage('没有成功返回主机名');
                halt;
            end;
            Host := GetHostByName(@Buffer[1]);
            if Host = nil then
                 begin
                    ShowMessage('IP地址为空');
                    halt;
                 end
            else
                 begin
                    Edit2.Text := Host.h_name;
                    for i:=1 to 4 do
                        begin
                            Ip:=IntToStr(Ord(Host.h_addr^[i-1]));
                            if i<4 then
                               Ipstr := Ipstr + Ip + '.'
                            else
                               Edit1.Text:=Ipstr+Ip;
                            end;
                        end;
                    WSACleanup;
                 end;
    end.
    得到结果后再发送到客户端就可以的哦
      

  2.   

    首先我想问一个问题,如果你的客户端不知道服务器端的IP或者计算机名称,那么它怎么能够找到服务器,并发送链接请求呢?
        其次如果你的客户端已经链接到服务器端了,那么还需要从服务器端得到服务器的IP地址或者是计算机名称吗?
        当然,如果你是使用IP方式链接的服务器端,那么想直到服务器端的计算机名称,或者反之,那么楼上的方法就可以实现了!
      

  3.   

    最原始的办法,,,也是最常用的办法.....1. 服务端启动后,把IP用FTP协义上传一个TXT文件到网络上,,,,  比如http://www.csdn.com/ip.txt,,,,,内容比如:  127.0.0.1  ABC2. 客户端要连接的时候,从http://www.csdn.com/ip.txt下载这个文件后,
    读出里面的127.0.0.1和ABC呵,这是我第一次回答问题,,,,,虽然没有技术性可言,但是现在常用的就是这种做法
      

  4.   

    就这样获得的:
    ClientSocket.port跟ServerSocket.port一致
    ClientSocket.Host
    ClientSocket.Address