delphi11 IdTCPServer 客户端A向客户端B发送消息
时间: 2023-07-27 10:31:41 浏览: 101
要在Delphi 11中使用IdTCPServer使客户端A向客户端B发送消息,您可以使用以下步骤:
1. 在客户端A连接到服务器时,将其ID保存在某个地方,例如一个字符串列表中。您可以使用IdTCPServer的OnConnect事件来实现这一点:
```
procedure TForm1.IdTCPServerConnect(AContext: TIdContext);
begin
// 将客户端ID添加到列表中
ClientList.Add(AContext.Connection.Socket.Binding.PeerIP);
end;
```
2. 当客户端A发送消息时,使用其ID查找客户端B并将消息发送给它。您可以使用IdTCPServer的OnExecute事件来实现这一点:
```
procedure TForm1.IdTCPServerExecute(AContext: TIdContext);
var
I: Integer;
begin
// 从客户端读取消息
Msg := AContext.Connection.IOHandler.ReadLn;
// 将消息发送给所有其他客户端
for I := 0 to ClientList.Count - 1 do
begin
if ClientList[I] <> AContext.Connection.Socket.Binding.PeerIP then
begin
IdTCPClient.Host := ClientList[I];
IdTCPClient.Connect;
IdTCPClient.IOHandler.WriteLn(Msg);
IdTCPClient.Disconnect;
end;
end;
end;
```
在此代码中,我们遍历客户端列表并将消息发送给除发送方以外的所有客户端。我们使用IdTCPClient组件连接到每个客户端,将消息写入其IOHandler,然后断开连接。
请注意,此代码仅发送消息。要在客户端上显示消息,您需要在客户端上实现类似的代码。
阅读全文