【发布时间】:2019-04-02 21:53:36
【问题描述】:
我有客户发送一个非常简单形式的请求:只是字符串GET/PUT/INSERT/DELETE KEY <VALUE>,其中值是可选的,具体取决于所选的关键字。
键和值可以任意大小。
我正在用 C 语言实现一个服务器来为请求提供服务,但是我认为我遇到了 read() 系统调用读取一些但不是所有数据的问题。也就是说,服务器读取的只是客户端发送的一部分。
我如何知道整封邮件何时被阅读?
示例请求:
INSERT KEYkeyKEYkeyKEY VALUEvalueVALUEvalueVALUE
但服务器可能会读取:
INSERT KEYkeyKEYkeyKEY VALUEvalueVALUE
我怎么知道整条消息还没有被接收和阅读?
【问题讨论】:
-
如果您指定客户端必须以回车符、NUL/零字节或客户端和服务器都同意的其他明确定义的字符来结束每个字符串,则表示行尾,那么您的服务器可以在其 TCP 输入流中查找该字符,并在看到它时解析前面的字符。