def newFrame(buffer, next_frame_to_send, nBuffered, frame_expected, MAX_SEQ): from_network_layer(buffer, next_frame_to_send, nBuffered) # 帧属性 info = buffer[next_frame_to_send] # 待发送的信息 seq = next_frame_to_send # 序列号 ack = (frame_expected + MAX_SEQ) % (MAX_SEQ + 1) # ACK号 print("Cur Seq: ", seq) print("Cur Ack: ", ack) crc = CRC.generateCRC(info) # 生成校验和 data = crc.copy() # 整合后的数据 data.insert(0, ack) data.insert(0, seq) return data
cnt += 1 # 循环结束 if cnt == 21: break print("--------------------------------") print("----------Frame Pair {}----------".format(cnt)) # 超时处理 TIMEOUT, next_frame_to_send = timeout(next_frame_to_send, ack_expected) if TIMEOUT: # 重传 print("「ReSend」") outputPara() reSeq = next_frame_to_send reACK = (frame_expected + MAX_SEQ) % (MAX_SEQ + 1) reInfo = buffer[next_frame_to_send] reCRC = CRC.generateCRC(reInfo) data = reCRC.copy() data.insert(0, reACK) data.insert(0, reSeq) reFrame = addHeadTail(data) resend_data(reFrame, t, next_frame_to_send) t[next_frame_to_send] = 0 next_frame_to_send = inc(next_frame_to_send) # # 未启动双向filter # counterLost += 1 # counterErr += 1 continue # 丢弃一帧 if counterLost == filterLost: print("「Send lost」")