Freshman_XwX 2022-11-20 16:40 采纳率: 0%
浏览 3

python-多任务web静态服务器

面向对象多任务静态web服务器开发报错 AttributeError: 'HttpWebServer' object has no attribute 'tcp_ser_sk'
能否帮忙看看哪里错了
import socket
import threading


class HttpWebServer(object):
    def __int__(self):
        tcp_ser_sk = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
        tcp_ser_sk.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, True)
        tcp_ser_sk.bind(("", 8080))
        tcp_ser_sk.listen(10)
        self.tcp_ser_sk = tcp_ser_sk

    # 由于handle_request方法并未用到self对象,也未用到当前类,所以采取静态方法
    @staticmethod
    def handle_request(new_socket, ip_port):
        recv_data = new_socket.recv(4096)
        if len(recv_data) == 0:
            print(f'客户端{ip_port}已下线')
            new_socket.close()

        recv_content = recv_data.decode('utf-8')
        print(recv_content)
        request_line = recv_content.split(' ', maxsplit=2)
        request_path = request_line[1]
        print(request_path)

        if request_path == '/':
            request_path = '/index1.html'

        try:
            with open('C:/Users/XwX/Desktop/html' + request_path, 'rb') as file:
                file_data = file.read()
        except Exception as e:
            with open('C:/Users/XwX/Desktop/html/erro404.html', 'rb') as file_erro:
                file_data_erro = file_erro.read()
                response_line = "HTTP/1.1 404 Not Found\n"
                response_header = "Server: PWS/1.0\n"
                response_body = file_data_erro
                response = (response_line + response_header + '\n').encode('utf-8') + response_body
                new_socket.send(response)
        else:
            response_line = "HTTP/1.1 200 OK\n"
            response_header = "Server: PWS/1.0\n"
            response_body = file_data
            response = (response_line + response_header + '\n').encode('utf-8') + response_body
            new_socket.send(response)
        finally:
            new_socket.close()

    def start(self):
        while True:
            new_socket, ip_port = self.tcp_ser_sk.accept()
            print("客户端已上线:", ip_port)
            sub_threading = threading.Thread(target=self.handle_request, args=(new_socket, ip_port), daemon=True)
            sub_threading.start()


def main():
    web_server = HttpWebServer()
    web_server.start()


if __name__ == '__main__':
    main()


  • 写回答

2条回答 默认 最新

  • CSDN-Ada助手 CSDN-AI 官方账号 2022-11-20 18:42
    关注
    评论

报告相同问题?

问题事件

  • 创建了问题 11月20日

悬赏问题

  • ¥15 编辑cmake lists 明明写了project项目名,但是还是报错怎么回事
  • ¥15 关于#计算机视觉#的问题:求一份高质量桥梁多病害数据集
  • ¥50 如何将脑的图像投影到颅骨上
  • ¥15 提问一个关于vscode相关的环境配置问题,就是输入中文但是显示不出来,代码在idea可以显示中文,但在vscode不行,不知道怎么配置环境
  • ¥15 netcore使用PuppeteerSharp截图
  • ¥20 这张图页头,页脚具体代码该怎么写?
  • ¥15 关于#sql#的问题,请各位专家解答!
  • ¥20 WPF MVVM模式 handycontrol 框架, hc:SearchBar 控件 Text="{Binding NavMenusKeyWords}" 绑定取不到值
  • ¥15 需要手写数字信号处理Dsp三个简单题 不用太复杂
  • ¥15 数字信号处理考试111