function GetClientIP:integer;
var
  wVersionRequested : WORD;
  wsaData : TWSAData;
  p : PHostEnt;
  s : array[0..128] of char;
  p2 : pchar;
  s1:string;
  vr ,vb                 :Boolean;
  lpBuffer               :PChar;
  nSize                  :DWORD;
begin
{启动 WinSock}
try
  nSize := 1000;
  GetMem(lpBuffer, 1000);
  vb:= GetComputerName(lpBuffer,nSize);
  if vb  then
     DMPublic.sLoginComputerName :=lpBuffer;
  if vb then
  FreeMem(lpBuffer);  wVersionRequested := MAKEWORD(1, 1);
  WSAStartup(wVersionRequested, wsaData);{计算机名}  GetHostName(@s, 128);
  p := GetHostByName(@s);
//  ShowMessage(Format('Computer name is ''%s''.', [p^.h_Name]));{IP地址}
  p2 := iNet_ntoa(PInAddr(p^.h_addr_list^)^);
//  ShowMessage(Format('IP address is %s.',[p2]));
  s1 :=string(p2);
  sIP       :=s1;
  WSACleanup;
  except
  sIP :='Ip error'
  end;
end;

解决方案 »

  1.   

    serversocket1.socket.Connections[0].RemoteHost ;
      serversocket1.socket.Connections[0].RemoteAddress ;
      ....
      

  2.   

    客户主机名:Mysocket1.Socket.RemoteHost;
    客户机地址:Mysocket1.Socket.RemoteAddress;
    Socket对象是ServerSocket和ClientSocket控件的一个很有用的对象
      

  3.   

    可是我用RemoteHost和RemoteAddress属性时,系统提示错误:
    Windows Socket error:(10057), on API 'getpeername'
    不知何意,请指教!!心急如焚
      

  4.   

    10057的错误码表示winsocket没有连接
    你先检查一下client的代码是否正确
    是否已经连接到了Server
      

  5.   

    注意,Connections[0]表示当前活动的第一个连接,也可以用ACTIVECONNECTION
      

  6.   

    我用ServerSocket控件时,为什么不响应OnClientConnect事件呢
    能不能讨论一下原因,而且,OnClientDisconnect事件是响应的,奇怪!!