1

在将新客户端分配给新线程的多线程服务器中,我想设计一种模式来处理客户端的多个请求/确认。

请看下面的操作顺序(一旦客户端连接)

  1. 客户端发送请求以获取服务器上特定文件的状态
  2. 服务器发送数据以响应客户端。
  3. 客户端根据服务器响应决定一些动作
  4. 客户端可能会发送另一个请求,例如获取文件
  5. 服务器向客户端发送文件

我正在考虑一个请求/响应基于“ACTION_STRINGS”的模型。即一方发送特定的“ACTION_STRING”,然后发送数据,以便另一方可以理解不同的操作(如获取文件状态或获取文件)并根据该操作工作。

这里的问题是,这个好的模型可以工作吗?建议是否可以改进。建议是否有其他模型比这更好。

4

1 回答 1

0

实现这一点非常简单。

客户端发送它的动词或动作,它应该包含一个终止符("\r\n"在互联网世界中是最常见的)。

然后服务器从客户端读取请求(或动作)。它可以读取到终止符,然后根据操作决定是否需要更多,或者读取到最终终止符(在 HTTP 中这是一个空行,即"\r\n"直接跟在另一个之后"\r\n")。然后服务器执行请求的操作并可选地发送响应。

同时,客户端等待来自服务器的响应。然后它读取所有响应并对数据进行处理。对于响应,由于您可能发送二进制数据,因此您不能有一个固定的终止符,因为它实际上可能嵌入在二进制数据中,因此您需要在实际数据之前发送数据的长度。


由于您的协议似乎与 HTTP 非常相似,我建议您从 HTTP 开始并对其进行扩展以添加您需要的任何其他动词。例如,您可以使用 HTTPGET请求来获取文件,并添加INFO请求以获取有关文件的信息。

于 2013-05-16T07:32:26.470 回答