import socket import threading import os import sys import json import time import prot_codec as pc import target as tg from log import myprint from log import log_init # 代理服务器端脚本,用于转发端口数据 SERVER_PORT = 5345 # 定义个函数,使其专门重复处理客户的请求数据(也就是重复接受一个用户的消息并且重复回答,直到用户选择下线) def dispose_client_request(tcp_client_1,tcp_addr): myprint(f"客户端:{tcp_addr} 已连接") recv_data=bytearray() target =tg.tcp_target(tcp_client_1) while True: try: recv = tcp_client_1.recv(4096) except Exception as e: myprint(str(e)) break if recv: recv_data+=recv while True: start=recv_data.find(b'\xff') end=recv_data.find(b'\xfe') if(start==-1 or end ==-1): break target.recv_handler(recv_data[start:end+1]) recv_data=recv_data[end+1:] else: break myprint(f"客户端:{tcp_addr} 已下线") target.close() tcp_client_1.close() def start_service(): tcp_server = socket.socket(socket.AF_INET,socket.SOCK_STREAM) tcp_server.setsockopt(socket.SOL_SOCKET,socket.SO_REUSEADDR,True) tcp_server.bind(("",SERVER_PORT)) myprint(f"开始监听 ({SERVER_PORT})") tcp_server.listen(128) while True: tcp_client_1 , tcp_client_address = tcp_server.accept() thd = threading.Thread(target = dispose_client_request, args = (tcp_client_1,tcp_client_address)) # 设置守护主线程 即如果主线程结束了 那子线程中也都销毁了 防止主线程无法退出 # thd.setDaemon(True) thd.start() if __name__ == "__main__": log_init("proxy_service.log") start_service()