You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python Socket服务端出现utf-8解码0xbc错误导致服务中断如何解决

问题根因
  • 解码错误本质:客户端发送的字节流不是标准UTF-8编码,或者连接中断、传输异常导致收到的字节序列不完整,直接调用decode()默认会严格校验编码合法性,不合法就抛出UnicodeDecodeError
  • 服务崩溃原因:没有对单连接的处理逻辑做异常捕获,单个连接的错误直接击穿到最外层循环,导致整个服务终止
代码修复方案

直接修改代码,新增异常捕获逻辑+解码容错处理,确保单连接异常不会影响全局服务,修改后代码如下:

import socket

s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
print("Socket Created...")

server = ''
port = 5555

s.bind((server, port))
print(socket.gethostbyname(socket.gethostname()))

s.listen(8)
print("Waiting for connections.")

while True:
    c, addr = s.accept()
    print("Connected with ", addr)
    try:
        raw_data = c.recv(1024)
        # 解码加容错,errors可选ignore/backslashreplace/replace,根据业务需要选
        gamemodename = raw_data.decode('utf-8', errors='replace')
        # 这里也可以加非空校验,避免空包导致后续逻辑报错
        if not gamemodename.strip():
            print(f"Empty data from {addr}, close connection")
            c.close()
            continue
        # 原有后续业务逻辑放这里
    except Exception as e:
        # 捕获所有单连接相关异常,打印日志不中断服务
        print(f"Error handling connection from {addr}: {str(e)}")
    finally:
        # 确保不管是否报错都关闭连接,避免文件描述符泄漏
        c.close()

解码容错参数说明:errors='ignore'会直接跳过无法解码的字节,errors='replace'会用�替换无法解码的字符,errors='backslashreplace'会用转义序列显示异常字节,可根据业务场景选择。

服务自动重启方案

如果想要实现即使服务意外崩溃也能自动恢复,可选择以下任意一种方案:

方案1:Systemd托管(推荐,Ubuntu系统原生支持)

  1. 新建配置文件 /etc/systemd/system/ubs-server.service,内容如下:
[Unit]
Description=UBS Game Server
After=network.target

[Service]
User=root
WorkingDirectory=/root/UBS-server
ExecStart=/usr/bin/python3 server.py
Restart=always
RestartSec=2

[Install]
WantedBy=multi-user.target
  1. 执行命令启动服务并设置开机自启:
systemctl daemon-reload
systemctl enable --now ubs-server
  1. 查看运行日志命令:journalctl -u ubs-server -f

方案2:简单循环脚本(适合tmux临时运行)

在tmux窗口中新建run.sh脚本,内容如下:

#!/bin/bash
cd /root/UBS-server
while true
do
    python3 server.py
    echo "服务 crashed,1秒后自动重启..."
    sleep 1
done

给脚本加执行权限后运行即可:chmod +x run.sh && ./run.sh

内容的提问来源于stack exchange,提问作者Stash

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.30 23:57:02