Python網絡編程socket_client客戶端

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

相關文章
相關標籤/搜索