1

我计划用一个服务器和多个客户端构建一个应用程序。当客户端第一次连接到服务器时,必须给它一个 id。每次客户端发送请求时,服务器都会向客户端发送一组字符串。客户端然后处理这些字符串,一旦完成,它再次向服务器发送另一组字符串的请求。这些字符串存在于服务器上的数据库中。

我已经实现了处理字符串的客户端程序的一部分,但我不知道如何实现服务器和客户端之间的通信。

我正在使用 python 开发这个应用程序。我不知道网络编程,因此我不知道如何让它工作。

我遇到了套接字编程和面向消息的中间件、消息队列、消息代理,但不确定这是否是我需要的。谁能告诉我我需要使用什么以及我需要学习哪些主题才能使其正常工作。我希望我听起来并不含糊。

4

2 回答 2

0

我认为你应该看看 XML-RPC 协议,它允许你使用代理对象而不是编写低级套接字的东西。

Python 在实现它的标准库中带有两个模块,一个xmlprclib实现客户端,一个SimpleXMLRPCServer实现服务器。在 python3 中,它们被重命名为xmlrpc.clientand xmlrpc.server

这两个模块都附带了一些 示例用法,可能会让您了解如何使它们为您工作。

特别是,您的服务器将公开一个函数来注册该客户端,该函数返回一个新的客户端 ID,以及一个处理字符串并返回结果的函数,客户端将简单地在代理对象中调用该方法。实现起来应该很简单。

于 2013-02-16T10:42:39.543 回答
0

我可以建议使用类似beanstalkd的东西吗?

这样,您可以创建一个将“字符串”推送到队列的服务器,并且一个或多个客户端可以从该队列中提取一个“字符串”处理它,然后在完成后获取另一个“字符串”。

我相信以这种方式使用队列比创建套接字等更容易。

只是把例子从他们的网站上拿下来。

服务器?

>>> import beanstalkc
>>> beanstalk = beanstalkc.Connection(host='localhost', port=14711)
>>> beanstalk.put('hey!')
1

客户?

>>> job = beanstalk.reserve()
>>> job.body
'hey!'
>>> job.delete()

使用起来非常简单,能够创建“请求”、“结果”、“错误”队列(管)。

它可能不适合您的目的,但需要牢记。

于 2013-02-16T11:07:01.383 回答