python socketserver调用MyRequestHandller函数

python socketserver MyRequestHandller call a function

在python中,我使用socketserver创建了一个socketserver,当我想在handle方法中调用一个函数时,显示该函数没有定义,这是为什么?

代码如下:

from socketserver import (TCPServer as TCP, StreamRequestHandler as SRH)

HOST = ''
PORT = 21567
ADDR = (HOST,PORT)
BUFSIZ = 1024



class MyRequestHandler(SRH):
    def handle(self):
        print('connected from:',self.client_address)
        check()

tcpServ = TCP(ADDR, MyRequestHandler)
print('waiting for connection...')
tcpServ.serve_forever()

def check():
    print('success')

那是因为

tcpServ.serve_forever()

块和

def check():
    print('success')

从未达到。将 tcpServ.serve_forever() 调用移动到文件底部(或者更一般地说,将其作为对 运行 的最后命令)。

函数 "check()" 实际上应该是 class MyRequestHandler 的方法,而不是 class 范围之外的函数。

应该可行:

from socketserver import (TCPServer as TCP, StreamRequestHandler as SRH)

HOST = ''
PORT = 21567
ADDR = (HOST,PORT)
BUFSIZ = 1024

class MyRequestHandler(SRH):
    def handle(self):
        print('connected from:',self.client_address)
        self.check()
    def check(self):
        print('success')

tcpServ = TCP(ADDR, MyRequestHandler)
print('waiting for connection...')
tcpServ.serve_forever()