说明:此程序是与我的上一篇博文server一起开发的,他们可以建立TCP连接完成client-server通信。这里使用socket编程实现一个简单的client机。向server发出一个请求,将接收到的信息打印出来。命令行运行脚本时,输入server的host、port及向server请求的文件名称。若server所在的目录下面存在该文件,则将该文件的内容打印出来,否则就显示“404 Not Found!”。
分五步:
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发送的响应信息)
5.close socket to send eof to server(关闭socket并向server发送EOF断开TCP/IP连接)
【源程序】
#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程序一起实现TCP/IP连接的网络数据传输。先运行server程序,再运行client程序。client程序运行命令:Web_client.py serverHost serverPort filename 。client请求的文件在Web_server.py文件所在的目录下面存在则会在client端显示文件内容,否则打印“404 Not Found!”。
此程序经过简单的修改可以爬取网页的数据。
初学python网络编程,希望诸位不吝赐教。请与我联系:jt_2010@hust.edu.cn