服务器如何根据客户端输入执行不同的任务?

时间:2016-03-23 11:09:15

标签: python sockets tcp server

我目前正在使用Python的socketServer模块实现套接字服务器。我很难理解客户端如何“发出信号”服务器来执行某些任务。

正如您所知,我是这方面的初学者。我看了很多教程,然而,这些只告诉你如何在服务器中执行单一任务,例如修改来自客户端的消息并将其发回。

理想情况下,我想知道客户端是否有办法与服务器通信以执行不同类型的任务。

这个问题有标准方法吗?

我甚至使用了正确类型的服务器吗?

我正在考虑从客户端实现某种形式的消息传递,告诉服务器它应该执行哪个任务。

1 个答案:

答案 0 :(得分:1)

  

我正在考虑从客户端实现某种形式的消息传递,告诉服务器它应该执行哪个任务。

这正是您所需要的:应用程序协议。

套接字(假设流式Internet套接字或TCP)是一个字节流,仅此而已。为了给这些字节赋予任何意义,你需要一个协议来确定哪个字节(或其序列)意味着什么。

要解决的主要问题是这种套接字提供的流没有“消息”的概念。因此,当一方发送“HELLO”和“BYE”之后,它们将被连接到流中:“HELLOBYE”。甚至更糟糕的是,您的服务器首先收到“HELL”,然后是“OBYE”。

因此,您需要消息框架,或规则如何解释消息的开始和结束位置。

您通常不希望发明自己的应用程序协议。通常利用HTTP或其他现有协议来传递消息。