• Socket编程:Web服务器


    Socket编程:Web服务器

    实验要求

    用Python语言开发一个简单的Web服务器,它仅能处理一个请求。具体而言,Web服务器将:
    1.当一个客户(浏览器)联系时创建一个连接套接字;
    2.从这个连接接受HTTP请求;
    3.解释该请求以确定所请求的特定文件
    4.从服务器的文件系统获得请求的文件;
    5.创建一个由请求的文件组成的HTTP响应报文,报文前面有首部行;
    6.经TCP连接向请求的浏览器发响应。
    如果浏览器请求一个在该服务器中不存在的文件,服务器应当返回“404 Not Found”差错报文。
    

    Web服务器Socket编程代码

    
    # import socket module
    from socket import *  # 导入python套接字编程的库
    
    serverSocket = socket(AF_INET, SOCK_STREAM)  # new一个TCP欢迎套接字
    # Prepare a sever socket
    serverSocket.bind(('', 1234))  # 将TCP欢迎套接字绑定到指定端口1234
    serverSocket.listen(1)  # 设置服务器最大连接客户机数目为1
    
    # 主体程序:服务器和客户机进行信息的交互
    while True:
        # Establish the connection
        print ('Ready to serve...')
        connectionSocket, addr = serverSocket.accept();  # 建立一个TCP连接套接字,等待与客户端联系
        try:
            message = connectionSocket.recv(1024);  # 当建立了联系(accept()后),获取客户发送的报文
            filename = message.split()[1]
            f = open(filename[1:])
            outputdata = f.read();  # 从报文中读取信息
            # Send one HTTP header line into socket
            header = ' HTTP/1.1 200 OK
    Connection: close
    Connent-Type: text/html
    Connent-Length: %d
    
    ' % (
                len(outputdata))
            connectionSocket.send(header.encode())
    
            # Send the content of the requested file to the client(将 Web服务器请求到的网页 返还给客户机)
            for i in range(0, len(outputdata)):
                connectionSocket.send(outputdata[i].encode())
    
            connectionSocket.close()  # 关闭TCP连接套接字
    
        except IOError:
            # Send response message for file not found(如果连接建立失败:请求的文件找不到,则返回错误信息)
            header = ' HTTP/1.1 404 Not Found'
            connectionSocket.send(header.encode())
    
            connectionSocket.close()  # 关闭TCP连接套接字
    
    serverSocket.close()  # 关闭TCP欢迎套接字
    
    

    客户机请求的网页

    网页文件要和Web服务器代码文件放在同一个文件夹下面

    <head> Hello World! </head>
    

    开始实验

    • 在Pycharm中打开Web服务器的代码运行

    • 打开浏览器,在地址栏输入服务器代码中写入的端口号和之前的html文件

      localhost:1234/HelloWorld.html
      

    • 当在浏览器地址栏输入错误地址时会返回404 Not Found
  • 相关阅读:
    自动化测试用例设计实例
    day07 python2与python3 编码
    day06-2 数据结构
    遇到一个关于C#调用Microsoft.Office.Interop.Word实例化的一个问题
    关于C#调用matlab生成的dll的一些经验(亲测)
    javascript 检测浏览类型和版本
    图片自适应完美兼容IE8
    Java VS .NET:Java与.NET的特点对比
    【C#点滴记录】ASP.NET 使用C# 导出Word 和Excel
    关于现在IT行业从业者一些建议
  • 原文地址:https://www.cnblogs.com/Weber-security/p/12661567.html
Copyright © 2020-2023  润新知