服务器:

     当客户联系时创建一个连接套接字
     从这个连接接收HTTP请求(*)
     解释该请求所请求的特定文件 
     从服务器的文件系统获取该文件
     并发送文件内容
     如果文件不存在,则返回“404 Not Found”(*)

客户端:

    客户端可以与服务器建立TCP连接

    客户端通过TCP连接请求服务器端的某一文件

    在客户端显示介绍到的文件内容


注:在运行此文件前,server.py目录下需要包含file文件夹,里面装有服务器里的文件,客户端可以向服务器请求file里的文件。

readme:首先打开server.py,开启服务器
        然后打开client.py,输入文件名,包括后缀
        服务器文件系统为file文件夹
        client.py的命令行窗口中出现文件的具体信息
        按任意键关闭客户端

python一个简单的web服务器和客户端_文件系统

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()