关于socket的挑战问题
目前小弟在开发一个SRTP与RTP媒体流互转的功能,遇到一个问题,不知哪位大侠帮小弟解决一下!组网:
PC1------------SERVER------------PC2
voice:
|------SRTP----->|------RTP----->| fun:1
|<------SRTP-----|<------RTP-----| fun:2
|------SRTCP---->|------RTCP---->| fun:3
|<------SRTCP----|<------RTCP----| fun:4
video:
|------SRTP----->|------RTP----->| fun:5
|<------SRTP-----|<------RTP-----| fun:6
|------SRTCP---->|------RTCP---->| fun:7
|<------SRTCP----|<------RTCP----| fun:8
我的问题是:
fun:1、在SERVER侧建立一个socket,并且监听PC1的SRTP数据包,同时从另外创建的一个socket通道发送RTP包到PC2;
fun:2、在SERVER侧建立一个socket,并且监听PC2的RTP数据包,同时从另外创建的一个socket通道发送SRTP包到PC1;
fun:3、在SERVER侧建立一个socket,并且监听PC1的SRTCP数据包,同时从另外创建的一个socket通道发送RTCP包到PC2;
fun:4、在SERVER侧建立一个socket,并且监听PC2的RTCP数据包,同时从另外创建的一个socket通道发送SRTCP包到PC1;
......
可以看到,对于一个语音包来说,需要创建8个socket连接,加上视频,需要16个socket连接。
问题:
1、如果SERVER能够并发处理100个语音和视频流的功能,需要100 X 16 = 160个socket连接吗?
如果不是,那如何解决多socket的问题?
2、如果SERVER并发处理100个语音和视频流的功能,那每一个处理都要申请一个线程(线程池)?
如果不是,那如何处理?
3、当建立socket连接时,需要bind,而bind只需要对接收端口进行,那一个线程能否bind
多个?
4、是否有更好的设计方案?
补充:Java , Web 开发