コード例 #1
0
ファイル: host2.py プロジェクト: Fecer/Computer-Networks
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
コード例 #2
0
ファイル: host2.py プロジェクト: Fecer/Computer-Networks
        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」")