我使用基於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