2013-01-08 60 views
1

Indy TIdTCPServer組件有一個OnExecute事件,您可以在其中處理傳入數據。我的應用程序涉及流式傳輸打印機前處理的數據,所以我依賴於輸出設備的準備就緒。我想要做的是在輸出流繁忙時讓TCP流量控制管理輸入流。Indy TCP服務器上的TCP流量控制

我不知道的是如何最好地處理這種情況。 Indy文檔對使用示例有點亮,任何指導都會讚賞!

回答

3

您不需要手動處理TCP/IP流量控制。如果設備沒有準備好,只要不要在OnExecute代碼中讀取任何新的輸入數據,那就是你所要做的。數據將位於套接字的接收緩衝區中,直到Indy將其讀入它自己的緩衝區中,然後它就會坐在你自己的代碼中讀取它。如果套接字的接收緩衝區填滿,TCP/IP會自動通知對方停止發送數據,直到緩衝區釋放一些空間。

+0

無論數據流如何,OnExecute事件都會在連續生命週期的連續循環中觸發。事件結束後,立即再次發射。事件內部的代碼負責根據需要等待數據。所有讀操作都轉到Indy自己的'InputBuffer'上。只有在需要新數據填充InputBuffer來滿足讀取時,Indy纔會進入套接字接收緩衝區。 –