我有一个使用TipwIPDaemon组件构建的服务器应用程序。当客户端连接到连接的事件时,将使用连接的连接is触发该事件:
procedure TServLogic.IPDaemon1Connected(Sender: TObject;
ConnectionId, StatusCode: Integer; const Description: String);
文档声明TipwIPDaemon.connectioncount属性返回连接的数量。
我的印象是,你将按以下方式进行:
for i:=0 to ipd.connectioncount-1 do begin
remotehost := ipd.remotehost[i]
......
但是,我现在发现情况并非如此,对于ipd.remotehostx这样的调用,下标x表示唯一的连接is。
比如说,我得到了我的第一个连接。据我所知,这始终是ipd.remotehosts2。如果第二个连接出现,然后第一个连接被删除,那么第二个连接的引用仍然是connectionid=1。
我的问题是:是否有与conectioncount?对应的连接id的内部列表?还是我要自己维持这个?例如,我想向所有连接的客户端发送数据。我似乎需要一个连接符的“列表”:
for i:=0 to ipd.connectioncount-1 do begin
IPD.DataToSend[GetConnectionID(i)] := 'Hello There';
......
发布于 2010-08-16 21:31:05
一种方法是使用连接和断开连接的事件。基本上,您将维护自己的当前连接ID列表。当连接事件触发时,您会将ID添加到列表中。当断开连接的事件触发时,您将从列表中删除该ID。
发布于 2010-08-16 20:59:43
你能检查一下每个连接的状态吗?例如,您应该能够这样做:
for i:=0 to ipd.connectioncount-1 do
begin
if (ipd.Connected[i]) then
begin
ipd.DataToSend[i] := 'Hello There';
...
end;
end;
https://stackoverflow.com/questions/3496704
复制相似问题