1. 程式人生 > >[計網] 用python語言開發一個簡單的web伺服器和客戶端

[計網] 用python語言開發一個簡單的web伺服器和客戶端

伺服器:

     當客戶聯絡時建立一個連線套接字 從這個連線接收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()