客户端服务器通信网络编程python

时间:2013-02-16 10:38:23

标签: python network-programming client

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

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

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

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

2 个答案:

答案 0 :(得分:0)

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

Python在标准库中提供了两个实现它的模块,xmlprclib实现了客户端,而SimpleXMLRPCServer实现了服务器。在python3中,它们被重命名为xmlrpc.clientxmlrpc.server

这两个模块都附带some examples个用法,可能会让您了解如何让它们为您服务。

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

答案 1 :(得分:0)

我可以建议使用类似beanstalkd的内容。

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

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

从他们的网站上取下这个例子。

服务器?

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

客户端?

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

简单易用,能够创建'请求','结果','错误'队列(管)。

它可能无法满足您的目的,但需要牢记这一点。