connection.readln等待回车的问题

时间:2011-02-16 21:21:06

标签: delphi delphi-7

我遇到TCpindy connection.readln方法的问题,我在服务器端应用程序挂起时使用Readln方法无法控制另一方发送数据(因为接收数据不包含carrige返回),我是尝试使用readtring方法,但没有成功 有没有任何建议来解决这个问题,我正在寻找其他组件而不是indy,

我需要从其他客户端(tcp连接)获取数据,而不需要有关接收数据大小的任何信息,也不需要在每帧结束时回车。

1 个答案:

答案 0 :(得分:1)

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

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

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

  3. 在每封邮件之间暂停

  4. Indy可以处理所有这些可能性,但您需要首先确定实际使用哪一种。

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