关于高效的文件传输方式

IvanForSun 2009-03-19 10:09:12
大家认为高效的网络文件传输方式是什么,个人感觉:是不是用文件映射方式实现。是否还有更好的方式?
...全文
169 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
百事烟 2009-03-20
  • 打赏
  • 举报
回复
在操作多个socket中,直接找到目标socket,比如1个服务器有10000个连接,如果每次接收都在sockList遍历寻找对应sock会降低效率。

多线程操作多个sokcet操作,确保在某个线程处于等待信号状态(如果有的话),另一个线程可以正常工作。

多线程操作多个sokcet操作,如果有多个CPU,合理分配,可以真正做到线程同时运行

普通模式下,操作过程是先接收数据到sokcet的缓冲区,再从缓冲区COPY到你的Buf,使用重叠IO,可以接收数据直接到你的buf,省50%的数据复制时间.

以上抄书 IOCP的优势


野男孩 2009-03-20
  • 打赏
  • 举报
回复
用TransmitFile函数发送文件吧,异步的方式处理网络发送,并且读文件的操作交给操作系统,完全避免了调用ReadFile函数的用户态/内核态的来回切换。

用p2p本质上还是要读文件发送数据,只不过是多条链路上并发,也受到网络带宽的限制。 实际上点对点传,异步处理的话100M网卡基本满负载传送数据是可以的。
Eleven 2009-03-20
  • 打赏
  • 举报
回复
Up
csgdseed 2009-03-20
  • 打赏
  • 举报
回复
速度是P2P最快了
yxw860516 2009-03-20
  • 打赏
  • 举报
回复
up
cnzdgs 2009-03-19
  • 打赏
  • 举报
回复
提高文件传输效率关键在于充分利用网络资源,尽量让网络不要空闲,可以通过异步I/O、多线程和多连接来实现。另外一点值得注意的是尽量少发数据,一方面是通讯协议的选择,另一方面可以考虑数据压缩(根据网络速度与数据压缩速度综合考虑)。
cnzdgs 2009-03-19
  • 打赏
  • 举报
回复
如果是传输,对于访问文件的速度就不需要要求太高了,只要访问文件的方式不要效率太低,所需时间是远小于传输时间的。
一般情况,每次从文件中读取1MB以上的数据,效率就不算低了。
对于文件映射,其主要作用是略过常规读写文件的中间环节,省去各级函数调用的执行时间,当程序对文件频繁进行读写时,可以提高效率。对于顺序读写文件,只要每次读写的数据量不要太少,中间过程所花的时间是可以忽略不计的。此外,文件映射还可以减少数据从磁盘缓冲到程序缓冲的复制过程,不过与磁盘I/O相比,内存复制所需的时间也是忽略不计的。
IvanForSun 2009-03-19
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 zyyoung 的回复:]
何谓高效?网络文件?哪种文件
[/Quote]
本地文件,
高效目前只讲速度快,假设传输的终端位于广域网中
oyljerry 2009-03-19
  • 打赏
  • 举报
回复
p2p,现在这个不都是主流嘛..
zyyoung 2009-03-19
  • 打赏
  • 举报
回复
何谓高效?网络文件?哪种文件

18,356

社区成员

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

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