import socket
import threading

# 监听 8082 端口
HOST = '0.0.0.0'
PORT = 8082

def handle_client(conn, addr):
    print(f"连接成功: {addr}")
    # 把流数据写入临时文件（供 Flask 读取）
    with open('/tmp/usb_cam.flv', 'wb') as f:
        while True:
            try:
                data = conn.recv(4096)
                if not data:
                    break
                f.write(data)
                f.flush()  # 实时写入，避免缓存
            except Exception as e:
                print(f"连接断开: {e}")
                break
    conn.close()
    print(f"连接关闭: {addr}")

# 启动 TCP 服务
server = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
server.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
server.bind((HOST, PORT))
server.listen(5)
print(f"流服务已启动，监听 {HOST}:{PORT}")

# 多线程处理连接
while True:
    conn, addr = server.accept()
    thread = threading.Thread(target=handle_client, args=(conn, addr))
    thread.daemon = True
    thread.start()