• 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()  
  • 相关阅读:
    算法导论2.37答案
    算法导论2.37的算法
    heavy dark读《《暗时间》》
    深入SetOP2函数
    c++标准库都有哪些文件
    c++ sort函数的用法
    深入char转换为int/unsigned int的内部机制分析
    顺序容器之vector
    java的动态代理机制详解
    java.lang.IllegalStateException: Web app root system property already set to different value
  • 原文地址:https://www.cnblogs.com/jiangzhaowei/p/8999227.html
Copyright © 2020-2023  润新知