說明:此程序是與個人上一篇博文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