2013-01-08 59 views
1

Indy TIdTCPServer组件有一个OnExecute事件,您可以在其中处理传入数据。我的应用程序涉及流式传输打印机前处理的数据,所以我依赖于输出设备的准备就绪。我想要做的是在输出流繁忙时让TCP流量控制管理输入流。Indy TCP服务器上的TCP流量控制

我不知道的是如何最好地处理这种情况。 Indy文档对使用示例有点亮,任何指导都会赞赏!

回答

3

您不需要手动处理TCP/IP流量控制。如果设备没有准备好,只要不要在OnExecute代码中读取任何新的输入数据,那就是你所要做的。数据将位于套接字的接收缓冲区中,直到Indy将其读入它自己的缓冲区中,然后它就会坐在你自己的代码中读取它。如果套接字的接收缓冲区填满,TCP/IP会自动通知对方停止发送数据,直到缓冲区释放一些空间。

+0

无论数据流如何,OnExecute事件都会在连续生命周期的连续循环中触发。事件结束后,立即再次发射。事件内部的代码负责根据需要等待数据。所有读操作都转到Indy自己的'InputBuffer'上。只有在需要新数据填充InputBuffer来满足读取时,Indy才会进入套接字接收缓冲区。 –