【问题标题】:Problem with connection.readln waiting for carriage returnconnection.readln 等待回车的问题
【发布时间】:2011-02-16 21:21:06
【问题描述】:

我遇到了 TCpindy connection.readln 方法的问题,我无法控制对方发送数据,当在服务器端应用程序中使用 Readln 方法时挂起(因为接收数据不包含回车),我尝试读取字符串方法但没有成功 有什么建议可以解决这个问题吗,我正在寻找其他组件而不是 indy,

我需要从其他客户端(tcp 连接)获取数据,而无需任何有关接收数据大小的信息,并且每帧末尾没有回车。

【问题讨论】:

  • 您想要阅读的数据实际上是什么样的?
  • 数据来自GPRS Box,使用wireshark,我看到数据没有任何回车,帧的长度我不知道,
  • 这不是我问的。我想让你展示实际的 GPRS 数据,就像 Wireshark 展示的那样。然后我或其他人可以准确地告诉你如何最好地用 Indy 阅读它。

标签: delphi delphi-7


【解决方案1】:

您必须知道数据是如何发送的才能正确读取。 TCP 是一个字节流,发​​送方需要以某种方式指示一个消息在哪里结束,下一个消息从哪里开始,或者通过:

  1. 为每条消息添加前缀 长度

  2. 在两者之间放置唯一的分隔符 每条消息

  3. 在每条消息之间及时暂停

Indy 可以处理所有这些可能性,但您需要先确定实际使用的是哪一个。

更糟糕的情况,使用CurrentReadBuffer() 方法,该方法返回一个字符串,其中包含当时可用的任何原始字节。

【讨论】:

  • 嗨,谢谢,CurrentReadBuffer() 方法似乎对我有用
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-03-13
  • 2015-11-27
  • 2011-11-11
  • 2017-12-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多