2011-03-17 153 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