This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

基于NDK的视频服务器设计



DM648,NDK。

实现支持同时多连接的视频服务器,是否有成熟的方案?

目前设想,最直接的实现方式。

开启一个主线程,在主线程里面

1)建立socket

2)bind

3)listen

4)accept

接受到一个client就TaskCreate一个线程,然后再返回accept

在client线程里面进行视频数据的实时收发。

dsp/bios对相同优先级的线程没有进行分时片调度,只是简单的先来后到。

我在系统里面开启16个优先级为3的线程的时候,发现视频就已经十分卡了。

还有一种就是把所有接受到的client放在一个线程里面处理,使用select或者poll。

但问题是,如果有一个client突然掉线,其他的就都卡住了。

尝试在每次send之前检测client的socket是否有异常:

a)使用select+except_fd_se。

b)使用fdStatus(xxx_socket,FDSTATUS_SEND,&status)

但是在网线突然掉线的情况下,都没有检测出来,但是这个时候,直接send的话,每次发送将会阻塞3分钟左右。然后报告发送失败。

还有一个ndk对socket设置属性的时候,可以设置socket的发送和接受超时时间。但是这样做,遇到网络环境特别差劲的时候,同时又是tcp。很容易报告超时失败的。

希望版主给个建议