From fd4f4a805ad4659d9f211e7c2d04d4f3c35446ff Mon Sep 17 00:00:00 2001 From: fanpt <320622572@qq.com> Date: Wed, 27 Aug 2025 11:36:47 +0800 Subject: [PATCH] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E7=AB=AF=E5=8F=A3=E5=8D=A0?= =?UTF-8?q?=E7=94=A8=E6=98=AF=EF=BC=8C=E6=9B=B4=E6=96=B0=E7=8A=B6=E6=80=81?= =?UTF-8?q?3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app.py | 24 ++++++++++++++++++++++-- 1 file changed, 22 insertions(+), 2 deletions(-) diff --git a/app.py b/app.py index af0cc4a..94c3156 100644 --- a/app.py +++ b/app.py @@ -50,6 +50,7 @@ import json import multiprocessing as mp import sqlite3 import os +import socket app = Flask(__name__) # sockets = Sockets(app) @@ -92,8 +93,8 @@ def set_status(db_path, status_code: int): """ 更新数据库中 livetlking_enable_status 的状态值 0 未启动(前端写入) - 1 启动成功 - 2 启动中 + 1 启动中 + 2 启动成功 3 启动失败 """ conn = sqlite3.connect(db_path, check_same_thread=False) @@ -125,6 +126,16 @@ def update_sessionid_in_db(sessionid): if conn: conn.close() +# 检查端口是否可用 +def check_port(port: int): + """检查端口是否被占用""" + with socket.socket(socket.AF_INET, socket.SOCK_STREAM) as s: + try: + s.bind(('0.0.0.0', port)) # 尝试绑定端口 + return True # 端口可用 + except socket.error: + return False # 端口已占用 + def build_nerfreal(sessionid: int) -> BaseReal: opt.sessionid = sessionid @@ -522,6 +533,15 @@ if __name__ == '__main__': for route in list(appasync.router.routes()): cors.add(route) + # 端口配置 + listen_port = opt.listenport # 从配置中获取监听端口 + + # 检查端口是否被占用 + if not check_port(listen_port): + logger.error(f"端口 {listen_port} 已被占用,无法启动服务。") + set_status(db_path, 3) # 设置为启动失败 + exit(1) # 退出程序 + pagename = 'webrtcapi.html' if opt.transport == 'rtmp': pagename = 'echoapi.html'