×××通过服务器来中转语音的话,服务器一般能同时支持多少人???

msvcp60 2006-01-19 03:07:53
由于对称NAT下无法穿越,所以只好使用服务器来转发,这种情况下服务器大概能处理多少请求呢?

程序结构想这么做:
方法1:当有中转请求的时候,每路开2个线程,使用用2个Socket,一个线程负责收数据,一个负责发数据.

方法2:当有中转请求的时候,每路开1个线程,使用2个Socket,一个SOKCET用于收数据,一个SOCKET用于发数据

方法3:当有中转请求的时候,每路开1个线程,使用1个Socket,一个SOKCET用于收数据,一个SOCKET用于发数据,收完再转发。

哪种方法好点呢?不知道这样的中转对于一台服务器来说,一般能承受多少路请求??

请有经验的高手给予指点,谢谢。
...全文
352 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
dzq138 2006-01-25
  • 打赏
  • 举报
回复
感兴趣.
偶也有同样的问题.
如果是一个上传,另外的客户端接收.
最多可以顶得住多少个客户呢?
lzzqqq 2006-01-24
  • 打赏
  • 举报
回复
主要看服务器的带宽,一般用8K采样频率的话每人每秒大概会发送8k数据,如果服务器是100M独占带宽的话(注意100M带是bit),10*1024/8=1280用户
msvcp60 2006-01-24
  • 打赏
  • 举报
回复
up
msvcp60 2006-01-20
  • 打赏
  • 举报
回复
是啊,我是中转数据。。

征集好的 方案。。
qkaibo 2006-01-20
  • 打赏
  • 举报
回复
一般情况下 应该不会有TCP来做 这样的话 socket要建立多少个?

基本上都是tcp发送命令 使用UDP发送数据包

当然一个端口不可能胜任接受那么多的UDP数据


可以多开放端口 用来负责接受数据 使用TCP来取得端口

服务器上肯定有一套机制来掌控端口的繁忙程度 自动分配

当然 一些大型的公司的服务器 都是有服务器组的 而不是一个服务器~

专门有一台服务器 接收登陆 然后将客户端指定到其它数据处理服务器上

所以 并不是简单的去计算 我一台机器要开多少线程 一个机器最多能处理多少数据
cici2006 2006-01-20
  • 打赏
  • 举报
回复
学习。。。qkaibo(艾夏) 应该是最正确的方法。

WinEggDrop 2006-01-20
  • 打赏
  • 举报
回复
楼主问的是通过服务器去转发语音数据,并不是要做一个语音的服务器.
WinEggDrop 2006-01-19
  • 打赏
  • 举报
回复
先讨论一下你说的方法,然后再讨论能支持多少人.
三种方法都不好.
楼主所说的三种方法,都是在有新请求时就要创建新的线程去处理(先不论是创建一个还是两个线程),可以先看看MSDN去于一个进程最高可以创建多少个线程的限制看看.如果我没的记错,在系统资源足够的情况下,一个进程最高只可以创建2028个线程.
那么就算服务器的资源足够(CPU,内存,带宽等资源),楼主使用的方法最多也只能是支持2028人,如果使用方法1,最多只支持1014人.
所以最好的方法还是使用异步非阻塞的模式或IOCP(IOCP对于中转数据程序几乎不太适用,因为无法确定数据是客户端,还是服务端来).这两个模式都是使用1个或几个线程,处理所有请求.

至于能够支持多少人,那么就是要看服务器的资源了.基本上这是一个资源的问题,最主要的当然还是带宽问题.
假设服务器在CPU,内存等其它资源都足够的情况下,服务器使用的是10Mbps独享(相当于1.25MB,除去一些数据头等,大约有1MB到1.1MB等可用的带宽).那下面就只是简单的数学计算了.假设每个人中转语音数据都要使用大约N KB/S的带宽,那么能够支持的人数,大概就是否1 MB * 1024 / N.当然这并不是一个准确的数字,只是一个大概,可能会偏大或偏小点.
UDX协议 2006-01-19
  • 打赏
  • 举报
回复
3~5k人没有问题
xianshiqi 2006-01-19
  • 打赏
  • 举报
回复
yczz 2006-01-19
  • 打赏
  • 举报
回复
这个要看服务器配制了

18,357

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 网络编程
c++c语言开发语言 技术论坛(原bbs)
社区管理员
  • 网络编程
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧