在将新客户端分配给新线程的多线程服务器中,我想设置一个模式,该模式将处理客户端的多个请求/确认。
请参阅下面的操作顺序(连接客户端后)
我正在考虑一个请求/响应基于“ACTION_STRINGS”的模型。即一方发送特定的“ACTION_STRING”然后发送数据,以便其他方可以理解不同的操作(如获取文件状态或获取文件)并根据该操作进行工作。
这里的问题是,这是一个好的模型吗?建议是否可以改进。建议其他模型是否优于此。
答案 0 :(得分:0)
实现这一点非常简单。
客户端发送其动词或操作,其中应包含终结符("\r\n"
是Internet世界中最常见的)。
然后,服务器从客户端读取请求(或操作)。它可以读取直到终止符,然后根据操作决定是否需要更多,或读取直到最终终止符(在HTTP中这是一个空行,即"\r\n"
后面直接跟着另一个"\r\n"
) 。然后,服务器执行请求的操作,并可选择发送响应。
同时客户端等待服务器的响应。然后它读取所有响应并对数据执行某些操作。对于响应,由于您可能发送二进制数据,因此您不能拥有固定的终结符,因为它实际上可能嵌入到二进制数据中,因此您需要在实际数据之前发送数据的长度。
由于您的协议似乎与HTTP非常相似,我建议您从HTTP开始并扩展它以添加您需要的任何其他动词。例如,您可以使用HTTP GET
请求来获取文件,并添加INFO
请求以获取有关文件的信息。