python一個簡單的web服務器和客戶端


服務器:

     當客戶聯系時創建一個連接套接字
     從這個連接接收HTTP請求(*)
     解釋該請求所請求的特定文件 
     從服務器的文件系統獲取該文件
     並發送文件內容
     如果文件不存在,則返回“404 Not Found”(*)

客戶端:

    客戶端可以與服務器建立TCP連接

    客戶端通過TCP連接請求服務器端的某一文件

    在客戶端顯示介紹到的文件內容


注:在運行此文件前,server.py目錄下需要包含file文件夾,里面裝有服務器里的文件,客戶端可以向服務器請求file里的文件。

readme:首先打開server.py,開啟服務器
        然后打開client.py,輸入文件名,包括后綴
        服務器文件系統為file文件夾
        client.py的命令行窗口中出現文件的具體信息
        按任意鍵關閉客戶端



client.py
[python]  view plain  copy
 
  1. import socket  
  2. serverName = '127.0.0.1'  
  3. serverPort = 50008  
  4. clientSocket = socket.socket(socket.AF_INET,socket.SOCK_STREAM)  
  5. clientSocket.connect((serverName,serverPort))  
  6. print 'Input the http request:'  
  7. sentence = ''  
  8. while True:  
  9.     tmp = raw_input()  
  10.     sentence = sentence + tmp  
  11.     if(tmp==''):break  
  12. clientSocket.send(sentence)  
  13. receiveSentence = clientSocket.recv(1024)  
  14. print 'From Server:', receiveSentence  
  15. isEnd = raw_input()  
  16. clientSocket.close()  

server.py
[python]  view plain  copy
 
  1. import socket  
  2. import os  
  3.   
  4. serverPort = 50008  
  5. serverSocket = socket.socket(socket.AF_INET,socket.SOCK_STREAM)  
  6. serverSocket.bind(('127.0.0.1',serverPort))  
  7. serverSocket.listen(1)  
  8. print 'The server is ready to receive'  
  9. while 1:  
  10.     connectionSocket, addr = serverSocket.accept()       
  11.     sentence = connectionSocket.recv(1024)  
  12.     ans = ''  
  13.     flag = False;  
  14.     for ch in sentence:  
  15.         if(ch == ' ' and flag ==True):break  
  16.         if(flag == True):  
  17.             ans = ans + ch;  
  18.         elif(ch==' '):  
  19.             flag = True;       
  20.               
  21.     path = 'file//' + ans  
  22.     if(os.path.exists(path)==False):  
  23.         connectionSocket.send('404 Not Found')  
  24.     else:  
  25.         file = open( path,'r')  
  26.         while 1:  
  27.             data = file.read(1024)  
  28.             if not data:break  
  29.             connectionSocket.send(data)  
  30.         file.close()  
  31. connectionSocket.close()  


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM