2011-03-17 126 views
2

有没有办法断开活动连接?我知道用OnConnect你可以拒绝连接...但那只是当连接德尔福IdMappedPortTCP问题

+0

我有点找到了一种方法来使用OnOutboundData来做这种有点贫民区 – Bryan 2011-03-17 12:05:27

回答

2

是的,TidMappedPortTCP是一个TidTCPServer后裔,所以你基本上可以使用几种不同的方法来断开活动客户端。例如,如果你想断开OnExecute事件(基于一些武断的标准)内活动的客户端,你可以简单地做了事件处理中这个地方:

AContext.Connection.Disconnect; 

如果您需要到别的地方断开活动连接在您的代码中(例如不在OnExecute事件处理程序中),方法将如下所示:

  • 创建一个列表(TList或某个集合类),它将保存您的活动连接;
  • 在OnConnect事件处理程序中,将任何新的客户端添加到此列表中;
  • 在OnDisconnect事件处理程序中,从此列表中删除断开连接的客户端;

这样,您将始终拥有活动客户端的集合,这将使您能够找到特定的客户端,访问它的连接对象并在需要时调用Disconnect方法。

让我知道你是否需要更详细的代码示例。

+0

你不需要维护你自己的'TList'连接。 'TIdTCPerver'已经提供了它自己的一个 - Threads属性(Indy 9和更早)或者'Contexts'属性(Indy 10)。 – 2011-03-17 20:48:30