Ошибка сервера SocketServer Python: ошибка типа: требуется объект, подобный байтам, а не ‘str’

#python #serversocket

#python #serversocket

Вопрос:

Я создаю эмулятор сервера Growtopia (в образовательных целях: я протестирую его и, возможно, создам частный сервер в будущем. Я надеюсь, что я выполню)
Странно, что я только что получил эту ошибку, и я использую Stack overflow для исправления проклятых ошибок, спасибо вам всем …

Вот мой код :

 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.1nport|17091ntype|1n#maint|Server is not available!nnbeta_server|127.0.0.1nbeta_port|17091nnbeta_type|1nmeta|localhostnRTENDMARKERBS1001")
            def do_GET(self):
                self.send_response(200)
                self.end_headers()
                self.wfile.write("server|127.0.0.1nport|17091ntype|1n#maint|Server is not available!nnbeta_server|127.0.0.1nbeta_port|17091nnbeta_type|1nmeta|localhostnRTENDMARKERBS1001")
            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:UsersHPAppDataLocalProgramsPythonPython38-32libsocketserver.py", line 316, in _handle_request_noblock
    self.process_request(request, client_address)
  File "C:UsersHPAppDataLocalProgramsPythonPython38-32libsocketserver.py", line 347, in process_request
    self.finish_request(request, client_address)
  File "C:UsersHPAppDataLocalProgramsPythonPython38-32libsocketserver.py", line 360, in finish_request
    self.RequestHandlerClass(request, client_address, self)
  File "C:UsersHPAppDataLocalProgramsPythonPython38-32libsocketserver.py", line 720, in __init__
    self.handle()
  File "C:UsersHPAppDataLocalProgramsPythonPython38-32libhttpserver.py", line 427, in handle
    self.handle_one_request()
  File "C:UsersHPAppDataLocalProgramsPythonPython38-32libhttpserver.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.1nport|17091ntype|1n#maint|Server is not available!nnbeta_server|127.0.0.1nbeta_port|17091nnbeta_type|1nmeta|localhostnRTENDMARKERBS1001").encode()
  File "C:UsersHPAppDataLocalProgramsPythonPython38-32libsocketserver.py", line 799, in write
    self._sock.sendall(b)
TypeError: a bytes-like object is required, not 'str'
  

Комментарии:

1. Не могли бы вы включить трассировку стека?

Ответ №1:

Основываясь на информации, предоставленной без трассировки стека, я полагаю, что вам, вероятно, следует предоставлять байты, а не строку в wfile.запись.

Либо добавьте .encode() в конец строки, которую вы хотите записать, либо добавьте к ней префикс b.