在客户端:
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已经具备这个功能了,好好试试就知道了~~~~~
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已经具备这个功能了,好好试试就知道了~~~~~
首先说一下,如果你是在同一个局域网内那可以用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;