我知道,我问了很多问题……但作为一个新的 delphi 开发人员,我一直在思考所有这些问题 :)
这个处理使用 indy 10 的 TCP 通信。为了提高通信效率,我将客户端操作请求编码为单个字节(在大多数情况下,当然后面是其他数据字节,但在这种情况下只有一个单个字节)。问题是
var Bytes : TBytes;
...
SetLength (Bytes, 1);
Bytes [0] := OpCode;
FConnection.IOHandler.Write (Bytes, 1);
ErrorCode := Connection.IOHandler.ReadByte;
不会立即发送该字节(至少不调用服务器执行处理程序)。例如,如果我将“1”更改为“9”,一切正常。我假设 Indy 缓冲传出字节并尝试禁用写缓冲
FConnection.IOHandler.WriteBufferClose;
但它没有帮助。如何发送单个字节并确保立即发送?而且 - 我在这里添加另一个小问题 - 使用 indy 发送整数的最佳方式是什么?不幸的是,我在 TIdTCPServer 的 IOHandler 中找不到像 WriteInteger 这样的函数......和
WriteLn (IntToStr (SomeIntVal))
对我来说似乎不是很有效率。我是连续使用多个写命令还是将内容打包在一个字节数组中并发送一次,这有什么不同吗?
感谢您的任何回答!
编辑:我添加了一个提示,我正在使用 Indy 10,因为关于读写过程似乎有重大变化。