编者注: 不好意思,有点犯二了.这篇文章最初发布的时候标题是“Python的WebSocket编程”,坦白来说有点文不对题。我们在这里打算讨论的仅仅是常规的socket编程。尽管 Web Socket 和常规sockets有点很相似,但又不是同一个东西。那我还是希望这篇文章对你们有点帮助。Socket是网络应用的基础。而Python使得网络socket编程入门变得超级简单。在这篇简介里面我们将创建一个简单服务器,用于接受和相应客户端程序的请求。由于本人最近对 Linux Containers 有点痴迷,因此我们也将在服务器中实现2个容器。同时在容器中我们在几秒钟内就能创建其他一些主机,这就能非常简单的模拟出一个网络。
创建容器
我使用的是Ubuntu14.04. 然后用root用户运行下面的命令就可以创建好2个容器了。lxc-create -t download -n pyServer # Choose ubuntu, trusty, amd64 when prompted # Then clone the first container lxc-clone -o pyServer -n pyClient
serverPort = 12000 serverSocket = socket(AF_INET, SOCK_DGRAM) serverSocket.bind(("", serverPort)) print "The server is ready to rock and roll!"
while 1: name, clientAddress = serverSocket.recvfrom(2048) response = "Hello " + str(name) + "! You are really good at socket programming" serverSocket.sendto(response, clientAddress)这段代码很直观。我们创建了一个serverSocket监听12000端口。当接收到请求的时候(包含用户名)就会回复一条信息。启动服务器的命令是 python pyServer.py 如果一切正常的话,你应该可以看到这样一条信息 This server is ready to rock and roll! 用Ctrl+a 和Ctrl+d退出容器(还有screen会话)
# Replace the IP address in serverName with the IP of your container that you grabbed previously. serverName = "10.0.3.211" serverPort = 12000 clientSocket = socket(AF_INET, SOCK_DGRAM)