gpt4 book ai didi

tcp - TidTcpClient ReadBytes 方法不返回数据

转载 作者:可可西里 更新时间:2023-11-01 02:51:35 25 4
gpt4 key购买 nike

我的客户端接收字符串,其中字符串的前 4 个字符定义消息的长度。

示例字符串:0034PDCS00001700kg00000000kg00001700kg

  • 消息长度为34
  • 消息是PDCS00001700kg00000000kg00001700kg

我发现当使用 TidTcpClient.ReadString 方法或 ReadBytes 方法时读取被阻止,即使有足够的数据。

我不确定我做错了什么。有人可以给我建议吗?

FClient.IOHandler.ReadBytes(Buffer, 4, False);// this gets the length OK
len := BytesToString(Buffer).ToInteger;
FClient.IOHandler.ReadBytes(Buffer, len, True);// this blocks and doesn't move on
sReceive := BytesToString(Buffer);

最佳答案

当我测试时,您所展示的内容对我来说工作得很好。长度和数据被正确读取,没有阻塞。所以发生了其他事情,接收到的数据不是您在此处显示的数据,或者问题发生在您未显示的另一段代码中。

在任何情况下,您都可以通过使用 ReadString() 而不是 ReadBytes() 来读取两个值来简化您显示的代码:

len := FClient.IOHandler.ReadString(4).ToInteger; 
sReceive := FClient.IOHandler.ReadString(len);

关于tcp - TidTcpClient ReadBytes 方法不返回数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31620620/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com