[計網] 用python語言開發一個簡單的web伺服器和客戶端
阿新 • • 發佈:2019-02-04
伺服器:
當客戶聯絡時建立一個連線套接字 從這個連線接收HTTP請求(*) 解釋該請求所請求的特定檔案從伺服器的檔案系統獲取該檔案 併發送檔案內容 如果檔案不存在,則返回“404 Not Found”(*)
客戶端:
客戶端可以與伺服器建立TCP連線
客戶端通過TCP連線請求伺服器端的某一檔案
在客戶端顯示介紹到的檔案內容
注:在執行此檔案前,server.py目錄下需要包含file資料夾,裡面裝有伺服器裡的檔案,客戶端可以向伺服器請求file裡的檔案。
readme:首先開啟server.py,開啟伺服器
然後開啟client.py,輸入檔名,包括字尾
伺服器檔案系統為file資料夾
client.py的命令列視窗中出現檔案的具體資訊
按任意鍵關閉客戶端
client.py
import socket serverName = '127.0.0.1' serverPort = 50008 clientSocket = socket.socket(socket.AF_INET,socket.SOCK_STREAM) clientSocket.connect((serverName,serverPort)) print 'Input the http request:' sentence = '' while True: tmp = raw_input() sentence = sentence + tmp if(tmp==''):break clientSocket.send(sentence) receiveSentence = clientSocket.recv(1024) print 'From Server:', receiveSentence isEnd = raw_input() clientSocket.close()
server.py
import socket import os serverPort = 50008 serverSocket = socket.socket(socket.AF_INET,socket.SOCK_STREAM) serverSocket.bind(('127.0.0.1',serverPort)) serverSocket.listen(1) print 'The server is ready to receive' while 1: connectionSocket, addr = serverSocket.accept() sentence = connectionSocket.recv(1024) ans = '' flag = False; for ch in sentence: if(ch == ' ' and flag ==True):break if(flag == True): ans = ans + ch; elif(ch==' '): flag = True; path = 'file//' + ans if(os.path.exists(path)==False): connectionSocket.send('404 Not Found') else: file = open( path,'r') while 1: data = file.read(1024) if not data:break connectionSocket.send(data) file.close() connectionSocket.close()