TI中文支持网
TI专业的中文技术问题搜集分享网站

基于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。很容易报告超时失败的。

希望版主给个建议

jinhuan zhu:

你好,我也做这方面的研究。能把你的程序共享一份吗?我想做全双工通信

赞(0)
未经允许不得转载:TI中文支持网 » 基于NDK的视频服务器设计
分享到: 更多 (0)