服务端 向所有客户端发消息
时间: 2023-08-10 17:16:02 浏览: 101
要实现服务端向所有客户端发送消息,可以使用以下步骤:
1. 在服务端创建一个列表,用于存储所有连接到服务端的客户端。例如:
```delphi
var
Clients: TList<TIdContext>;
```
2. 在服务端接收到客户端连接时,将客户端添加到列表中。例如:
```delphi
procedure TMyServerForm.IdTCPServer1Connect(AContext: TIdContext);
begin
Clients.Add(AContext);
end;
```
其中,Clients 是上一步创建的列表,AContext 是客户端的上下文对象,代表客户端与服务端之间的连接。
3. 在服务端需要向所有客户端发送消息时,遍历列表中的所有客户端,向它们发送消息。例如:
```delphi
procedure TMyServerForm.SendMessageToAllClients(const AMsg: string);
var
I: Integer;
begin
for I := 0 to Clients.Count - 1 do
begin
TIdContext(Clients[I]).Connection.IOHandler.WriteLn(AMsg);
end;
end;
```
其中,SendMessageToAllClients 方法接收一个参数 AMsg,代表要发送的消息。它遍历 Clients 列表中的所有客户端,向它们发送 AMsg 消息。TIdContext(Clients[I]).Connection.IOHandler.WriteLn(AMsg) 方法用于向客户端发送消息。
通过以上步骤,你就可以实现服务端向所有客户端发送消息了。
阅读全文