我使用基于BaseServer的UDPServer接收碎片UDP数据包。python更改UDPServer中的最大限制recv缓冲区
但有些数据包大于8192字节(@handle方法,打印len(数据)),我无法正确使用它们。
我的原代码:
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。
python SocketServer documentation
我SocketServer.TCPServer例
class MyTCPHandler(SocketServer.BaseRequestHandler):
def handle(self):
self.data = self.request.recv(1024).strip()
找到,但self.request获取没有recv的方法
如果您有任何解决方案,以修复或改变最大限制的recv缓冲区。
RFC 768对于IPv4,最大有效载荷大小为65535 – user1778354
什么是“我无法正确地使用它们”是什么意思? – abarnert
它不起作用,如果有效负载大于8192(我怀疑是缓冲区限制)。我将无法在处理方法中具有完整的有效负载。 – user1778354