在客户端:
clientread事件中:
while socket.receivelength>0 do
begin
re:=allocmem(socket.receivelength);//var re:pchar;
relong:=socket.receivelength;//var relong:integer;
totallen:=totallen+relong//var totallen:integer;--为在线人数
end;
在服务器端:
在serverclientconnect事件中:
count:=server.socket.activeconnections;//var count:integer; server-Tserversocket
只给出部分程序,给予参考
不需要用IP来识别,Tserversocket和Tclientsocket已经具备这个功能了,好好试试就知道了~~~~~

解决方案 »

  1.   

    客户端离线时给服务器端发信息,看看《深入delphi6网络编程》里面就有一个例子。
      

  2.   

    attacker2000(沙漠军刀) :哈哈,这么拼命呀,不要睡觉了~~~~
    首先说一下,如果你是在同一个局域网内那可以用IP来判断,因为IP地址不可能相同,不然局域网中会出现问题.
    要知道掉线人数的名字,在onclientconnect事件中:
    var
     count:integer;
     idindex:integer;
    begin
     memo1.lines.add(''使用者掉线:'');
     memo1.lines.add(''socketid:''+inttostr(socket.sockethandle));//获得掉线者的窗口句柄
     idindex:=combobox1.items.indexof(inttostr(socket.sockethandle));//根据窗口句柄选出掉线者
     combobox1.items.delete(idindex);//从列表中消除此掉线者
     count:=server.socket.activeconnections-1;//重新获得在线人数
    end;