如何使用UDP传送数据给一千个客户端? (300分)

  • 主题发起人 主题发起人 truest9
  • 开始时间 开始时间
T

truest9

Unregistered / Unconfirmed
GUEST, unregistred user!
请问如何写出高效率的传送程序?
 
1000个用户太多了,一般的聊天室没那么多人,也就几十个人!
 
我想表示的目的也就是尽力追求更高的效率
应该有比我直接使用控件高出数倍的方法,我需要知道的就是这个了
 
直接用内嵌汇编编写
 
没有办法的,只有一个个的发包,internet上不支持多播的
 
确实是一个一个的轮流发送
问题就在为每个连接发送的时间太长了
 
njcw666,如何用汇编写?
 
用汇编无非是
push TSockIn
push 0,
push 0;
push ilen;
push buf
push FSocket
Call sendto;
什么的,也没什么的
 
to 张无忌:您说过用API直接写发送代码,怎么写?
 
那要看网络带宽如何了,可以采用多线程同时发
 
你直接用API建立连接所花费的时间也是很多的,取决于你的网络质量
 
用多线程试一试
 
lsgd1688:他用的是UDP,不用建立连接的,
用多线程是可以,但是建立多少线程,,没个线程管理多少用户,由于是UDP,
接受函数可以收到任意一个发到这个端口的数据包,控制是个很大的问题
 
使用多线程确实能提高发送效率吗?
我看过资料,多线程将CPU按时间片划分给每个线程使用
同一时间CPU还是只为一个线程服务
除非机器有多个CPU,各位如何看待这个?
 
在CPU没有占满的时候,可以提高速度的!
 
程序我写出来了,在一个线程中发送,只需要不到五十个发送
主机的CPU占用就会达到100%,而且一直如此(别的程序根本无法使用了)
请问如何解决???
 
看来只有减少通讯数据了,acm的语音质量可以降低一点
 
to 蒋劲刚:
这不是最好的解决方法,因为实际上我需要给数百人传送ACM语音数据
光是降低语音质量可能没什么效果,现在使用GSM610格式,流量也非常小,大约1.6K/秒
 
光是网络带宽恐怕就不够了!我记得好象还有更低的格式
 
to 蒋劲刚:
我是在局域网上测试的,这个CPU占用率高的原因不是由于网络带宽引起的
您说的更低的格式,音质就大为不行了
 
后退
顶部