简单的服务器/客户端字符串交换协议
我想找一种简单又干净的方法,让两个Python程序之间可以交换字符串。这个协议其实很简单:客户端和服务器之间发送字符串,接收方根据字符串的内容采取相应的行动——我想应该是通过一个处理器来完成的——然后可能会回复对方一个字符串,也可能不回复。字符串可以有三种情况:第一种是确认信息,告诉一方另一方还活着;第二种是一个包含命令的“腌制”类(pickled class),如果是从“客户端”发往“服务器”,就是这个;如果是从“服务器”发往“客户端”,那就是一个响应;最后一种是“锁定”命令,告诉对话的一方另一方正在处理事情,直到收到另一个锁定信息之前,不应该再问问题。
我之前看过Python内置的SocketServer.TCPServer,但觉得它太底层了,不太支持重新连接,而且客户端必须使用socket接口,我希望能把这些封装起来。
接着我尝试了Twisted框架,特别是LineOnlyReceiver协议和服务器示例,但我发现学习曲线太陡峭,在线文档假设的知识太多,而且缺乏示例和好的文档(除了2005年的O'Reilly书,这个还有效吗?)。
然后我试了pyliblo库,它非常适合这个任务,但可惜它是单向的,无法“回复”客户端,而我需要将回复和特定命令关联起来。
所以我的问题是:有没有现成的框架、库或模块,可以让我在服务器中有一个客户端对象,用来读取命令和发送回复;在客户端中有一个服务器对象,用来读取回复和发送命令?我希望在简单设置后(客户端,服务器地址是host:port;服务器,你在监听端口X)就能使用,底层的socket、重新连接等问题都能处理好。
谢谢任何回答(请原谅我的英语和经验不足,这是我第一次提问)