我使用基于 BaseServer 的 UDPServer 来接收碎片 UDP 数据包。
但是有些数据包大于 8192 字节(@handle 方法,打印 len(data)),我无法正确使用它们。
我的原始代码:
class MyUDPHandler(SocketServer.BaseRequestHandler):
def handle(self):
global arr_len_recv
data = self.request[0].strip()
socket = self.request[1]
s_recv_paylaod_len = len(data)
print "s_paylaod",binascii.hexlify(data)
if __name__ == '__main__':
server = SocketServer.UDPServer((HOST, LISTEN_PORT), MyUDPHandler)
tmp = threading.Thread(None, loop_send, None,(param,server) , {})
tmp.daemon=True
tmp.start()
poll=0.1
server.serve_forever(poll)
所以我使用 RTFM BaseServer、UDPServer、TCPServer。
我在 SocketServer.TCPServer 示例中找到
class MyTCPHandler(SocketServer.BaseRequestHandler):
def handle(self):
self.data = self.request.recv(1024).strip()
但是 self.request 没有 recv 方法
如果您有任何解决方案来修复它或更改 recv 缓冲区的最大限制。