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。很容易报告超时失败的。
希望版主给个建议