【发布时间】:2020-09-09 23:31:07
【问题描述】:
所以我正在尝试制作一个 Growtopia 服务器模拟器,但实际上我得到了这个令人困惑的错误。我找不到任何关于...的信息
这是我的代码
import cgi #not used yet
import http.server
import logging #not used yet
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|Mainetrance message (Not used for now) -- Growtopia Noobs\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|Mainetrance message (Not used for now) -- Growtopia Noobs\n\nbeta_server|127.0.0.1\nbeta_port|17091\n\nbeta_type|1\nmeta|localhost\nRTENDMARKERBS1001")
def log_message(self, format, *args):
return
PORT = 80
HOST = ""
Handler = http.server.SimpleHTTPRequestHandler,ServerHandler
OUT_HOST = HOST
httpd = socketserver.TCPServer((HOST, PORT), Handler)
print("Server Port : ", PORT)
if OUT_HOST == "" or " " or "\n":
print("Server Hostname : ", "localhost")
else:
print("Server Hostname : ", HOST)
httpd.serve_forever()
【问题讨论】:
-
trace 的确切含义是什么?另请注意,
if OUT_HOST == "" or " " or "\n"无法按预期工作。 This 问题解释了原因 -
Handler = http.server.SimpleHTTPRequestHandler,ServerHandler看起来很可疑。最后的逗号使Handler成为一个元组,而不是一个函数。你想在那里做什么? -
@pythomatic 这似乎不太可能。需要将其视为导致该错误的函数,我不明白为什么需要调用
address字段。此外,在 Python 库中使用(HOST, PORT)作为“地址”也很常见。 -
TCPServer的第一个参数最终在内部传递给socket.bind,这意味着一个元组适合作为第一个参数。 -
socketserver.TCPServer 的第二个参数应该是一个类。你正在传递一个元组。我相信你只能将一个 Handler 传递给这个函数。我不太确定您通过传递两个处理程序的元组来实现什么。