Skip to content

服务端重启后链路无法恢复 #439

@lvyangdev

Description

@lvyangdev
  • 因为服务端重启,重启后收到数据通过ikcp_parse_dataif (seg->sn == kcp->rcv_nxt && kcp->nrcv_que < kcp->rcv_wnd)判断入队列,此时conv一致,可惜的是seg->sn是之前递增的值,kcp->rcv_nxt将始终为0. 导致数据未入rcv_queue相当于未真正“接收”,因为ikcp_recv中的 if (iqueue_is_empty(&kcp->rcv_queue)) return -1;

  • 那么此时同步sn只能在客户端新建kcp对象吗?这个意思是否只能是业务层通过类似心跳的机制判断此时的服务器数据未真正接收(网卡收到了但是业务层未收到),然后重连?

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions