Skip to content
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

kcp可以在组播中使用吗(一对多场景),是否有可以实现的思路 #432

Open
chenqinggang001 opened this issue Nov 11, 2024 · 9 comments

Comments

@chenqinggang001
Copy link

chenqinggang001 commented Nov 11, 2024

局域网组播一对一的情况下,使用kcp是可行的
但是一对多的场景,如果每个接收端都ack,程序就崩了

@chenqinggang001
Copy link
Author

尝试过一对多的时候,限制仅一个设备ack,但是组播每个设备的丢包率是不一样的,每个设备收到的数据不一样,所以次方法行不通

@chenqinggang001
Copy link
Author

想请教一下,是否有其他实现的思路,或者组播一对多不能使用kcp?

@chenqinggang001 chenqinggang001 changed the title kcp可以在组播中使用吗,是否有可以实现的思路 kcp可以在组播中使用吗(一对多场景),是否有可以实现的思路 Nov 11, 2024
@skywind3000
Copy link
Owner

skywind3000 commented Nov 12, 2024

天底下就没几个协议支持组播,并非没有原因,即便让你看起来好像是组播,也需要分开维护每个远端的状态,这和
多创建几个 kcp 对象有啥区别?你自己直接多创建几个 kcp 对象会掉两斤肉么?

@chenqinggang001
Copy link
Author

一对多的情况下,为每个接收端创建一个kcp对象,是不是意味着同时要给每个接收端都发送一份数据,还是说只发一份数据,丢包数据会重传

@chenqinggang001
Copy link
Author

我的使用场景是一份视频流发送给多个接收端,为什么使用组播,是为了降低发送的数据量,只发一份数据,所有的接收端都可以观看,降低带宽开销

@skywind3000
Copy link
Owner

skywind3000 commented Nov 12, 2024

自己设计吧,你可以每个客户端用 kcp 和服务端连接,平时公共视频数据,你用独立 udp 组播,然后各个客户端发现有缺失了,再用 kcp 向服务器请求重发,服务器再用 kcp 单独发给各个客户端他们缺失的部分;并且客户端要做限制,超过一定时间重发没回来就直接丢帧吧。

@yeliqseu
Copy link

尝试过一对多的时候,限制仅一个设备ack,但是组播每个设备的丢包率是不一样的,每个设备收到的数据不一样,所以次方法行不通

看看喷泉码是不是符合你的要求。kcp用的是块码(block code),丢包率不同的组播场景下,很难做码率自适应。

@skywind3000
Copy link
Owner

他都组播了,哪里来的码率自适应。

@yeliqseu
Copy link

他都组播了,哪里来的码率自适应。

他的场景下各个设备有不同的丢包率。他的意思就是想要组播时也能码率自适应。我的意思是,块码的机制难以在组播场景下实现码率自适应。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants