如何解决Python SocketServer错误:TypeError:需要一个类似字节的对象,而不是'str'
我正在制作Growtopia服务器仿真器 (出于教育目的:我将对其进行测试,并可能在将来制造专用服务器。希望我能做到) 奇怪的是我刚收到此错误,我正在使用堆栈溢出修复该死的错误,谢谢大家……
这是我的代码:
import http.server
import socketserver
class ServerHandler(http.server.BaseHTTPRequestHandler):
def do_POST(self):
self.send_response(200)
self.end_headers()
self.wfile.write("server|127.0.0.1\nport|17091\ntype|1\n#maint|Server is not available!\n\nbeta_server|127.0.0.1\nbeta_port|17091\n\nbeta_type|1\nmeta|localhost\nRTENDMARKERBS1001")
def do_GET(self):
self.send_response(200)
self.end_headers()
self.wfile.write("server|127.0.0.1\nport|17091\ntype|1\n#maint|Server is not available!\n\nbeta_server|127.0.0.1\nbeta_port|17091\n\nbeta_type|1\nmeta|localhost\nRTENDMARKERBS1001")
def log_message(self,format,*args):
return
Handler = http.server.SimpleHTTPRequestHandler
PORT = 80
HOST = ""
OUT_HOST = HOST
info = OUT_HOST,PORT
httpd = socketserver.TCPServer((HOST,PORT),ServerHandler)
print("Server Port : ",PORT)
if "" in (OUT_HOST):
print("Server Hostname : ","localhost")
else:
print("Server Hostname : ",HOST)
httpd.serve_forever()
这是Stacktrace:
Exception happened during processing of request from ('127.0.0.1',52331)
Traceback (most recent call last):
File "C:\Users\HP\AppData\Local\Programs\Python\Python38-32\lib\socketserver.py",line 316,in _handle_request_noblock
self.process_request(request,client_address)
File "C:\Users\HP\AppData\Local\Programs\Python\Python38-32\lib\socketserver.py",line 347,in process_request
self.finish_request(request,line 360,in finish_request
self.RequestHandlerClass(request,client_address,self)
File "C:\Users\HP\AppData\Local\Programs\Python\Python38-32\lib\socketserver.py",line 720,in __init__
self.handle()
File "C:\Users\HP\AppData\Local\Programs\Python\Python38-32\lib\http\server.py",line 427,in handle
self.handle_one_request()
File "C:\Users\HP\AppData\Local\Programs\Python\Python38-32\lib\http\server.py",line 415,in handle_one_request
method()
File "C:/Users/HP/PycharmProjects/Crescentstar/main.py",line 10,in do_POST
self.wfile.write("server|127.0.0.1\nport|17091\ntype|1\n#maint|Server is not available!\n\nbeta_server|127.0.0.1\nbeta_port|17091\n\nbeta_type|1\nmeta|localhost\nRTENDMARKERBS1001").encode()
File "C:\Users\HP\AppData\Local\Programs\Python\Python38-32\lib\socketserver.py",line 799,in write
self._sock.sendall(b)
TypeError: a bytes-like object is required,not 'str'
解决方法
根据所提供的没有堆栈跟踪的信息,我相信您可能应该向wfile.write提供字节而不是字符串。
在要编写的字符串的末尾添加.encode(),或在其前面加上b。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。