下面的代码创建一个套接字服务器。我希望服务器根据用户输入做出响应。在这种情况下,如果它等于y,则会生成另一个消息。如何编辑现有代码以使其正常工作?
import socketserver
class MyTCPHandler(socketserver.BaseRequestHandler):
def handle(self):
y = 100
self.data = self.request.recv(1024).strip()
print("{} wrote:".format(self.client_address[0]))
print(self.data)
if self.data == y:
self.request.sendall(self.data, "is correct")
else:
self.request.sendall("incorrect")
if __name__ == "__main__":
HOST, PORT = "localhost", 9999
# Create the server, binding to localhost on port 9999
with socketserver.TCPServer((HOST, PORT), MyTCPHandler) as server:
# Activate the server; this will keep running until you
# interrupt the program with Ctrl-C
server.serve_forever()
编辑:我对代码进行了如下编辑:
class MyTCPHandler(socketserver.BaseRequestHandler):
def handle(self):
k = 500
self.data = self.request.recv(1024).strip()
print("{} wrote:".format(self.client_address[0]))
print(self.data)
if int(self.data) == k:
self.request.sendall((self.data), b"is correct")
else:
self.request.sendall(b"incorrect")
if __name__ == "__main__":
HOST, PORT = "localhost", 9999
# Create the server, binding to localhost on port 9999
with socketserver.TCPServer((HOST, PORT), MyTCPHandler) as server:
server.serve_forever()
如果值是“不正确的”,它会按原样输出“不正确的”。但是,如果k的值与用户输入的值相同,则会引发错误:'需要一个整数(got类型字节)。我已经尝试编辑部分代码,但还无法解决这个问题。任何帮助将不胜感激:)
数据是字节字符串,因此您需要在进行比较之前将其转换为int,尝试替换:
if self.data == y:
...
to
if int(self.data) == y:
...