维护ipWorks TipwIPDaemon组件的connectionid列表

时间:2010-08-16 19:41:17

标签: delphi

我有一个使用TipwIPDaemon组件构建的服务器应用程序。当客户端连接时,连接事件会被连接的 connectionid 触发:

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.remotehost [x] 之类的调用,下标 x 表示唯一的connectionid。

所以例如说我得到了我的第一个连接。根据我的了解,这始终是connectionid = 1。如果第二个连接进入,之后第一个连接被删除,第二个连接的引用仍然是 ipd.remotehosts [2]

我的问题:是否有与 conectioncount 对应的连接ID的内部列表?或者我必须自己维护吗?比方说,我想将数据发送到所有连接的客户端。我似乎需要一个connectionid的“列表”:

for i:=0 to ipd.connectioncount-1 do begin
  IPD.DataToSend[GetConnectionID(i)] := 'Hello There';
  ......

2 个答案:

答案 0 :(得分:1)

执行此操作的一种方法是使用已连接和已断开连接的事件。基本上,您将维护自己的当前连接ID列表。当Connected事件触发时,您将ID添加到列表中。当Disconnected事件触发时,您将从列表中删除该ID。

答案 1 :(得分:0)

您是否可以检查每个连接的状态?例如,您应该可以执行以下操作:

for i:=0 to ipd.connectioncount-1 do
begin
  if (ipd.Connected[i]) then
  begin
    ipd.DataToSend[i] := 'Hello There';
    ...
  end;
end;