不知道如何表达这个问题,以及它是否真的只与go语言有关,但是我想做的是让tcp服务器和客户端之间进行数据交换,基本上,客户端会将大量数据流化为较小的数据如果将数据块发送给服务器,则服务器将等待读取每个数据块,然后回复状态码,客户端将读取该状态码,并根据此状态码执行其他工作。
我使用下面的功能作为测试从客户端和服务器读取数据的方法(请注意,我知道这并不完美,但这只是测试):
现在,在我的情况下,如果我通过telnet连接(go代码还包括一个
如果我从代码中删除
我想我的问题是,如果我发送多个数据块,是否必须指定自己的分隔符,以便我知道何时停止从连接中读取并避免永远等待或等待服务器超时?
I guess my question is, if i send multiple chunks of data, do i have
to specify a delimiter of my own so that i know when to stop reading
from the connection and avoid waiting forever or waiting for the
server to timeout the connection
是。 TCP是一种流协议,如果不对消息进行某种形式的构架,就无法确定协议中消息的开始和停止位置。
使用的更常见的成帧方法是发送大小前缀,以便接收器无需缓冲结果并扫描定界符即可知道要读取多少内容。 这可以像