-
Notifications
You must be signed in to change notification settings - Fork 46
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
send队列长度超过128时只阻塞不报错 #38
Comments
KCP的设计
Lines 148 to 167 in db5b613
就是因为发送队列满了所以发不出去了。行为是合理的,用TCP如果对面一直不收,本地的socket buffer满了也是一样卡住。
那应该叫
Client Stream 实际上根本不会超时,服务端的 Stream 才会有超时。Client 端的 Session 只会在 KcpStream 实例析构时才会触发关闭逻辑,会唤醒所有等待在
可以试下 Lines 68 to 69 in db5b613
|
|
这个之前确实不知道😢,因为用的另一个c#的kcp库的客户端倒是会超时,超时了 我以为超时了 |
你可以加个超时,用 |
我可能哪里没理解对,我知道只有 |
KCP的 |
当我没说,一直运行着的是 |
在没有接收方的时候,一直发送数据包
输出:
发送第129个的时候
send
会阻塞住,而不是返回error,而且即便session
的timeout
到了也不会解除阻塞。同时也没有找到地方可以修改这个队列上限,或者查询当前队列长度。
这里不太清楚为啥用异步
send
,UdpSocket
的send
倒是同步的。游戏服务器逻辑帧60帧的情况下,客户端网络卡顿两秒钟(2x60=120个包)服务端的发送队列就会被塞满并阻塞。
是否可以考虑提供一个同步的
send_sync
函数?队列满了就直接返回报错。或者
send
在session
超时后返回一个报错?再或者提供一个查询发送队列的长度的函数,允许调用者在send前先检查一下队列是否已满?
如果可以的话还希望可以考虑下在
KcpConfig
里提供这个队列长度上限的配置。The text was updated successfully, but these errors were encountered: