gpt4 book ai didi

delphi - 从套接字读取原始数据

转载 作者:行者123 更新时间:2023-12-03 15:55:06 26 4
gpt4 key购买 nike

我有一个通过 gprs 向我的服务器发送数据的设备。问题是它发送原始数据,我不知道在哪里可以停止读取

目前我正在使用 TIdHttpServer 和类似的东西来读取字符串:

var
s : string;
repeat
s:=s+acontext.Connection.Socket.ReadChar;
until acontext.Connection.Socket.InputBufferIsEmpty;

对于我的问题有更好的解决方案吗?

最佳答案

TCP 是面向流的。如果协议(protocol)未知,服务器只能尝试读入字节数组(如果内存不是问题)或文件流。如果客户端正常断开连接,则数据是“完整的”。不幸的是,如果协议(protocol)未知,服务器无法判断客户端是死机还是正常断开连接。

InputBufferIsEmpty 没有帮助,因为它只说明 (TCP) 缓冲区中是否有数据 - 并且根据延迟,这种情况可能会经常发生,但这并不意味着不再有正在传输的字节。

您可以尝试通过客户端设备发送已知字符串来“逆向工程”协议(protocol)。但是,如果发送者是黑匣子,则可能存在许多特殊情况 - 考虑编码或“转义”字符等。

关于delphi - 从套接字读取原始数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10107004/

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