说明:此程序是与个人上一篇博文server一块儿开发的,他们能够创建TCP链接完成client-server通讯。这里使用socket编程实现一个简单的client机。向server发出一个请求,将接收到的信息打印出来。命令行运行脚本时,输入server的host、port及向server请求的文件名称。若server所在的目录下面存在该文件,则将该文件的内容打印出来,不然就显示“404 Not Found!”。 html
分五步: python
1.make a TCP/IP socket object(建立一个socket对象) 编程
2.connect to server machine and port(链接到server的port端口) 浏览器
3.send message to server over socket(经过socket发送信息到server) 网络
4.receive message from server(接收server发送的响应信息) socket
5.close socket to send eof to server(关闭socket并向server发送EOF断开TCP/IP链接) 命令行
【源程序】 code
#import socket module import sys import socket import string serverHost = '127.0.0.1' #default serverHost serverPort = 8000 #default serverPort filename = 'hello.html' #default filename clientSocket = socket.socket(socket.AF_INET, socket.SOCK_STREAM) #make a TCP/IP socket object if len(sys.argv) > 1: #serverHost、serverPort、filename from cmd line args 1..n serverHost = sys.argv[1] if len(sys.argv) >2: serverPort = string.atoi(sys.argv[2], 10) if len(sys.argv) >3: filename = sys.argv[3] #Prepare a server socket clientSocket.connect((serverHost, serverPort)) #connect to server machine and port print "Connected to the server..." #这里加上'GET /',是为了与浏览器访问形式保持一致(保留server 的兼容性) data = 'GET /' + filename #send message to server over socket clientSocket.sendall(data) print "Send:", data #receive message from server:up to 8k responce = clientSocket.recv(8192) print "Received:", responce #close socket to send eof to server clientSocket.close()
【运行程序】 server
与前一篇博文的server程序一块儿实现TCP/IP链接的网络数据传输。先运行server程序,再运行client程序。client程序运行命令:Web_client.py serverHost serverPort filename 。client请求的文件在Web_server.py文件所在的目录下面存在则会在client端显示文件内容,不然打印“404 Not Found!”。 htm
此程序通过简单的修改能够爬取网页的数据。
初学python网络编程,但愿诸位不吝赐教。请与我联系:jt_2010@hust.edu.cn