如题!
如何接收,才能顺利处理机器收到的所有数据包?
如何接收,才能顺利处理机器收到的所有数据包?
解决方案 »
- 不能连续调用,哪里的资源没有释放呢?
- 图标修改器的核心代码(但是有bug,不是所有的都可以修改,大家给看看)
- MFC中STL容器的使用问题
- 一个关于VISUAL ASSIST 的问题
- 好消息!BCGControlBar Pro 6.2 和注册码都已搞定!
- 打印机怎么打不出来图像,我在打印时用TextOut()和ToLine()打印文本正常,但用BitBlt()打不出图像是怎么回事?(
- wsprintf()是做什么用的?
- 请教各位大侠,如何将一对通过主键关联的表记录插入另一对相同结构的表内?具体请进入
- 我是一个小小程序员--你认同吗?
- 哪里有什么免费VTOOLSD!
- 高手帮忙~~关于vc中shockwaveflash控件载入flash文件的问题~~
- 高手帮忙~~关于vc中shockwaveflash控件载入flash文件的问题~~
在公网上,包控制在1k,那样对cpu要求较高,并要实现一些可靠传输算法。这个就比较复杂了情况。
发送方带宽800M
接收方带宽1M,
发送方通过UDP给接收方发生1G数据,接收方如何完全接收这个问题在于修正你的发送模式
要把发送模式从主动发送改成被动发送。什么意思呢?
1.发送方 通知接收方 “我有1G数据要发给你”
2.接收方 将1G分成许多数据块,按序列向发送方请求对应块的数据
3.发送方收到数据块请求,将对应数据块发送给对方。
4.接收方在发送某块数据块请求以后,一定时间没有收到数据,则表示网络丢包或者超时,重新请求该块
简而言之就是把push改成pull至于UDP的丢包问题,可以考虑使用可信赖UDP,例如UDT,Enet
[1]设置SOCKET 接收缓冲为尽可能的大,例如 512KB
[2]可以直接使用阻塞RECV循环接收+分配足够大和多的缓冲
[3]提高处理线程的优先级别目前能做的只有这么多了
默认的udp,根本就很难保证对方成功能接收到的.UDP的缺点在于,就算发送方发送的API返回成功标志,也并不代表收接方对成功接收到,这就是现代网络游戏,基本99%都不会用UDP(UDP网络游戏比较多时是主流还是在用33.6带率猫上网的时代),就算现代的网络通信程序,象QQ,MSN,yahoo messaenger,aol messenger等,除了QQ是用可以用UDP或TCP外,其它的全是用TCP,这是因为TCP协议的稳定性远高于UDP.你上面所提的问题,在默认的UDP基本上,是基本没办法做到100%收到的,除非将默认的UDP封装后再修改下(QQ为了保证数据传输的稳定性,对UDP也是再封装过的,并不是使用默认的UDP协议,不过仍然存在丢包的情况,只是机率很低罢)
WSARecvFrom返回之后,立即发起一个新的WSARecvFrom,然后再放到业务队列进行处理.
Intel(R) Pentium Dual CPU
[email protected]
1.99HZ, 0.98GB的内存
物理地址扩展