Python中的网络编程

2 投票
8 回答
1288 浏览
提问于 2025-04-15 18:24

我应该用哪个库来进行网络编程呢?是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在工业应用中很受欢迎,但学习起来比较难,需要花费不少时间。

撰写回答