Python中的网络编程
我应该用哪个库来进行网络编程呢?是sockets
最好,还是有更高级的标准接口呢?
我需要一个能在多个平台上都能用的东西(比如Linux、Windows、Mac OS X),而且它只需要能连接到其他使用同样库的Python程序就行。
8 个回答
6
有一个框架可能会引起你的兴趣:Twisted
6
答案要看你想做什么。
“我应该用哪个库来进行网络编程?”这个问题问得有点模糊。
比如说,如果你想做HTTP相关的事情,可以看看一些标准库,比如urllib、urllib2、httplib和sockets。具体用哪个,得看你想用什么协议,以及你想在哪个网络层面上工作。
在Python中,有很多库可以处理不同的网络任务,比如电子邮件、网页、远程过程调用(rpc)等等。
如果你是新手,先看看标准库的参考手册,了解一下你想做哪些任务,然后再决定用哪个库:http://docs.python.org/library/index.html
7
你想在不同的节点之间(可能是在不同的电脑上)发送Python数据吗?你可以看看SimpleXMLRPCServer。它是基于内置的HTTP服务器,而这个HTTP服务器又是基于内置的Socket服务器。虽然这两个服务器都不是最强大的工业级服务器,但设置起来非常简单,适合快速上手:
from SimpleXMLRPCServer import SimpleXMLRPCServer
server = SimpleXMLRPCServer(("localhost", 9876))
def my_func(a,b):
return a + b
server.register_function(my_func)
server.serve_forever()
而且连接起来也很简单:
import xmlrpclib
s = xmlrpclib.ServerProxy('http://localhost:9876')
print s.my_func(2,3)
>>> 5
print type(s.my_func(2,3))
>>> <type 'int'>
print s.my_func(2,3.0):
>>> 7.0
Twisted在工业应用中很受欢迎,但学习起来比较难,需要花费不少时间。