kcp icon indicating copy to clipboard operation
kcp copied to clipboard

:zap: KCP - A Fast and Reliable ARQ Protocol

Results 129 kcp issues
Sort by recently updated
recently updated
newest added

ikcp_check检测到有需要重发的segment,但是没有更新 ts_flush,ikcp_update可能判断不需要flush,直接返回

file: ikcp.c, line:510 , ikcp_send函数中的 count 判断有点问题,当发送一个大于发送窗口的包,并返回-2时,数据包的前一段数据已经被拼接进segment,最终发送了一个不完整的数据包。后面的数据流在接收端都会解析失败。可以考虑把这个判断放在segment拼接前,或者在返回失败的时候,恢复原来的segment。

下面代码中,在慢启动条件下(cwndsnd_una, prev_una) > 0) { if (kcp->cwnd < kcp->rmt_wnd) { // 本地窗口大小小于远程窗口 IUINT32 mss = kcp->mss; if (kcp->cwnd < kcp->ssthresh) { // 慢启动 kcp->cwnd++; kcp->incr += mss; } else {...

1、nodelay设置:**ikcp_nodelay(kcp_handle, 0, 10, 0, 1); ikcp_setmtu(kcp_handle, 1400);** 2、snd_wnd, rcv_wnd设置:**ikcp_wndsize(kcp_handle, 1024, 1024);** 3、ikcp_update 频率 10ms,也使用过5ms 4、 ikcp_waitsnd 的值最大值**没超过180** 5、 ikcp_flush发送后会调用,不管调用与否都会crash 6、发送数据每间隔5ms发送1200字节数据 7、两端以上的参数都是如此设置 提前是,没加kcp直接用udp发送程序无异常。 出现的问题:主要是发送几秒钟数据,然后crash在发送数据端 ikcp_update或者ikcp_send,或者系统直接busy,进程退出。 主要是问下,需要怎么修改参数配置或者引起的原因,目前也在边研究边调试。

你好,我是一名游戏开发者。我使用了kcp作为游戏客户端和服务器通信的方式。并且游戏已经成功上线。目前我遇到一个问题我没有思路,特来请教。 现象:极少数玩家反馈在进入游戏副本中看不到敌方,无法释放技能,但是能够看到世界聊天在滚动。 初步分析:通过远程联调,日志分析,我利用游戏中的ping-pong包,其机制是客户端一秒发送一次ping,并且会记录发送时间,服务器收到包之后,回一个pong,并且回传ping包时间+pong包处理时间。通过这个ping-pong包发现,客户端大概70秒之内只有ping包日志,然后70多秒之后,pong包一股脑的回来了。这些回来的pong包记录了ping包到达服务器的时间都已经是70秒左右。 所以我的初步结论是上行包卡顿了,但是这段时间的下行包是流畅的,这也导致检测游戏卡顿踢玩家下线重连机制是没有生效的。 但是为什么上行包卡顿,不知道,我又做了以下事情: 1. 玩家自述,他在同样的手机上,同样的网络(移动流量)下,使用另一个账号是没问题的。 2. 难道是账号问题,挣得玩家同意之后,我在本地登陆了玩家账号,去玩同样的副本,一次没有出现(玩家高概率出现) 到这一步,我就不知道下一步如何排查,我有几个猜测: 1、有没有可能是我kcp客户端处理得不对?导致某些情况没发送?我客户端服务器使用同一套代码,每一个连接都是一个kcp instance, 10毫秒一个tick去Poll,参数:nodelay = 1,interval = 10,resend = 0,nc = 1,sndwnd = 128,rcvwnd = 256 2、有没有可能是玩家运营商网络或者路由器之类的策略导致上行包被丢掉或者降权发送?有这种可能吗,上行能卡1分钟多,但是玩家小号又没问题 3、有无可能是客户端某种情况积压数据发送不完?但是账号在我本地又复现不了 感谢阅读,不知有无更好的思路或者排查方法

我想实现一个类似聊天的程序,服务端是否这样来实现,有点模糊。 1,是否需要对应每个客户端都需要创建一个kcp(因为conv需要匹配) 2,如果socket收到数据,我如何对应相应的客户端,用IP和端口吗 例如:服务端一个udp socket,bind一个端口 客户端发送消息,在服务端会对每个第一次来消息的客户端连接都创建一个kcp(因为conv需要匹配),我在socket收到消息根据remote ip和port来判断对应的conv(是否合适),用这个conv的kcp来input,不知道这样使用有没有问题?

Hello. Your library is great but it is safe threads and multiple clients? Consider that you have 100+ clients send data on the same channel SERVER: ``` ikcpcb *kcp1 =...