在Python中创建各种套接字响应

问题描述 投票:1回答:1

下面的代码创建一个套接字服务器。我希望服务器根据用户输入做出响应。在这种情况下,如果它等于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类型字节)。我已经尝试编辑部分代码,但还无法解决这个问题。任何帮助将不胜感激:)

python sockets
1个回答
0
投票

数据是字节字符串,因此您需要在进行比较之前将其转换为int,尝试替换:

if self.data == y:
    ...

to

if int(self.data) == y:
    ...
© www.soinside.com 2019 - 2024. All rights reserved.