Python3运行RCON脚本无服务器响应问题求助(原脚本支持Python2)
Python3 适配RCON脚本无响应问题解决方法
问题核心
Python2与Python3的字符串处理逻辑存在差异:Python2中字符串默认是字节流(bytes),而Python3中字符串为Unicode编码的str类型。原脚本直接传递str给socket.send,服务器接收的是错误编码的数据,因此无响应。
修改后的适配代码
import socket import time host = "192.168.1.12" # 服务器IP port = 28960 # 服务器端口 rcon_password = "rconhere" # RCON密码 command = "say" # 执行命令 messages = ['message1', 'message2', 'message3', 'message5'] # 消息列表 sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) sock.connect((host, port)) i = 0 while True: print("Sending..") # 将格式化后的字符串编码为bytes类型,满足Python3 socket.send的要求 send_content = f"\xFF\xFF\xFF\xFFrcon {rcon_password} {command} {messages[i%len(messages)]}\0" sock.send(send_content.encode('utf-8')) i += 1 time.sleep(60)
关键改动说明
- 对要发送的内容调用
encode('utf-8'),将Python3的str类型转换为socket.send所需的bytes类型 - 保留原RCON协议要求的前缀
\xFF\xFF\xFF\xFF和末尾的\0空字符,确保符合RCON通信规范
内容的提问来源于stack exchange,提问作者Ain Gaming
相关产品推荐
相关产品推荐

