Python SocketServer Error : TypeError: a bytes-like object is required, not 'str'
Python SocketServer Error : TypeError: a bytes-like object is required, not '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()
这是堆栈跟踪:
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, client_address)
File "C:\Users\HP\AppData\Local\Programs\Python\Python38-32\lib\socketserver.py", 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。
我正在制作一个 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()
这是堆栈跟踪:
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, client_address)
File "C:\Users\HP\AppData\Local\Programs\Python\Python38-32\lib\socketserver.py", 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。