以下代码是使用delphi 6自带的TServerSocket,其实很简单:
procedure TMainForm.LogServerSocketClientConnect(Sender: TObject;
Socket: TCustomWinSocket);
Var
strIp,strHost:string;
Count,i:Integer;
begin
strIp:=Socket.RemoteAddress;
strHost:=Socket.RemoteHost;
AccountListBox.Items.Add(strIp);
LogMemo.Lines.Add('['+DateTimeToStr(now)+']登陆:'+
' SocketID:'+Inttostr(Socket.SocketHandle)+
', Host:'+strHost+
', IP:'+strIp);
//只要有用户登陆,就将所有登陆用户的IP地址发送给大家,实际使用中可以使用帐户来处理。
//下面代码只是演示,最好另外开线程来处理,否则连接用户>30的话,就很容易出问题。
Count:=LogServerSocket.Socket.ActiveConnections;
for i:=0 to Count-1 do
begin
try
LogServerSocket.Socket.Connections.SendText(AccountListBox.Items.CommaText);
except
end;
end;
end;