相关疑难解决方法(0)

Indy写入缓冲/高效TCP通信

我知道,我问了很多问题......但是作为一个新的delphi开发人员,我一直在讨论所有这些问题:)

使用印10.为了使通信效率这一个与TCP通信交易,我编写一个客户端操作请求作为单个字节(在大多数情况下,接着,当然其他数据字节,但在这种情况下,只有一个单一的字节).问题是

var Bytes : TBytes;
...
SetLength (Bytes, 1);
Bytes [0] := OpCode;
FConnection.IOHandler.Write (Bytes, 1);
ErrorCode := Connection.IOHandler.ReadByte;
Run Code Online (Sandbox Code Playgroud)

不立即发送该字节(至少不调用服务器执行处理程序).如果我将'1'更改为'9',例如一切正常.我假设Indy缓冲了输出字节,并尝试禁用写缓冲

FConnection.IOHandler.WriteBufferClose;
Run Code Online (Sandbox Code Playgroud)

但它没有帮助.如何发送单个字节并确保立即发送?并且 - 我在这里添加另一个小问题 - 使用indy发送整数的最佳方法是什么?不幸的是,我无法在TIdTCPServer的IOHandler中找到像WriteInteger这样的函数......而且

WriteLn (IntToStr (SomeIntVal))
Run Code Online (Sandbox Code Playgroud)

对我来说似乎不是很有效率.是否有所作为我是否使用多个写命令行或字节数组一起收拾东西,并发送一次?

谢谢你的回答!

编辑:我补充说,我使用的是印地10日以来似乎有关于读了重大变化,写程序的提示.

delphi performance tcp client-server indy

8
推荐指数
1
解决办法
1万
查看次数

标签 统计

client-server ×1

delphi ×1

indy ×1

performance ×1

tcp ×1