各位,在下准备做一个毕业设计,就是视频聊天软件。现在声音与数据的压缩已经处理好了,由于我想软件在公网上使用,所以在程序中全部使用的是UDP来实现数据传递,以下是我在做软件前的一些问题,请大家指点一下( 假定我全部使用服务器转发),先行谢过啦。
1、如果高网速的server向低网速的client发数据,client会不会被淹没啊?由于服务器转发的数据都是实时的,我不可能使用sleep的方式减缓发速度。有没有办法让client不会被淹“死(机)”啊?
2、多媒体数据(声音数据与视频数据)的传送部份。我让client不停地向Server发数据,server收到数据后将之放入一个大的缓冲区中,我在server中仅开一个线程,这个线程不停的检查缓冲区,有数据就转发给所有在线用户,转发一条多媒体数据后,将之从缓冲区中清除。这样一来,有些数据可能在缓冲区中等待时间过长,我就把它直接清除。因为多媒体数据我觉得掉帧也无所谓,这样做的方法有无不妥?这种方式的转发是否高效?有人说可以使用SEDA方式提高转发效率,是吗?
3、关键数据(登录、退出、管理信息)的传送。由于使用了UDP,我想通过模拟TCP的方式(主要是三次握手)来实现可靠UDP的功能,这种思路行否?
4、还有一个最关键的问题,我看了E话通、UC等多媒体聊天室,他们动辄支持上万个用户(多个聊天室的用户),这是怎么 实现的啊?一个用户在聊天时(开语音、视频),10K/s的数据流量肯定是有的,服务器需要对这些数据进行转发,100个用户在线,服务器需要的带宽是10K*100=1MB,如果是1000个用户在线,那么服务器需要的带宽就可想而知了?有同学告诉我,他们是使用多个服务器实现的,我想也应该这样。如果我想实现多个服务器的结构,我怎样在多个服务器之间进行联系、如何在后台确定用户应该登录哪个服务器?有没有相关的参考代码啊?另外,我想在网上找些与服务器高效转发有关的代码, 在什么地方有现成代码可以借鉴啊?
1、如果高网速的server向低网速的client发数据,client会不会被淹没啊?由于服务器转发的数据都是实时的,我不可能使用sleep的方式减缓发速度。有没有办法让client不会被淹“死(机)”啊?
2、多媒体数据(声音数据与视频数据)的传送部份。我让client不停地向Server发数据,server收到数据后将之放入一个大的缓冲区中,我在server中仅开一个线程,这个线程不停的检查缓冲区,有数据就转发给所有在线用户,转发一条多媒体数据后,将之从缓冲区中清除。这样一来,有些数据可能在缓冲区中等待时间过长,我就把它直接清除。因为多媒体数据我觉得掉帧也无所谓,这样做的方法有无不妥?这种方式的转发是否高效?有人说可以使用SEDA方式提高转发效率,是吗?
3、关键数据(登录、退出、管理信息)的传送。由于使用了UDP,我想通过模拟TCP的方式(主要是三次握手)来实现可靠UDP的功能,这种思路行否?
4、还有一个最关键的问题,我看了E话通、UC等多媒体聊天室,他们动辄支持上万个用户(多个聊天室的用户),这是怎么 实现的啊?一个用户在聊天时(开语音、视频),10K/s的数据流量肯定是有的,服务器需要对这些数据进行转发,100个用户在线,服务器需要的带宽是10K*100=1MB,如果是1000个用户在线,那么服务器需要的带宽就可想而知了?有同学告诉我,他们是使用多个服务器实现的,我想也应该这样。如果我想实现多个服务器的结构,我怎样在多个服务器之间进行联系、如何在后台确定用户应该登录哪个服务器?有没有相关的参考代码啊?另外,我想在网上找些与服务器高效转发有关的代码, 在什么地方有现成代码可以借鉴啊?
解决方案 »
- 【兔子群】成立了,欢迎加入!
- 一个最简单的界面程序,vs2005调试不出界面,大侠帮忙啊
- MsgWaitForMultipleObjects()函数的前两个参数该怎么设置
- 求VC中,设置EDIT中文字颜色原理和方法
- unhandled exception 0xc0000005 错误
- 哪位大侠帮个忙呀!!!在线等!!!(高分相送)
- 视频压缩求助,经h.263压缩后每帧还有230K.
- 高人請進,關於MFC內部SubClassWindow的問題
- 这个数组如何初始化
- 请问如何配置Visual Studio 2005 Express,才能在新建的控制台应用程序中使用CFile Cstring类?
- 请教一个问题, 系统能否预先计算出一段程序的运行时间,如果能,则应如何计算.......
- 关于用UDP协议 每次发送很大的数据包的问题
有些这样的服务器使用的是集群,会自己调度。
1. 你说的问题对client不太可能存在,因为是网速慢,而不是处理速度慢,不过client最好也设置一个缓冲区。
2.如果需要服务器转发的话,一般是这样做的了。
3.关键数据(登录、退出、管理信息)的传送可以直接使用TCP连接了,无须所谓的模拟。
4.对音频和视频数据,我想他们的做法是:如果2个用户之间能直通的话,就不经过服务器转发了,这样可以减轻负担。
所以E话通等软件才能够处理这么多用户,
还有你的Server仅开一线程怎么够?我原来设计的是1个连接1个线程,使用线程池管理