基于UDP多线程传文件,将文件分块后,每个线程发送一块,请问是每个线程各用一个socket还是共用一个socket??? 就像飞鸽传书那样传,多线程传时是不是要生成N个socket,每个socket负责一块???另外接收端N个线程一直在recv,只要有包过来就收,怎么区分是哪一块的socket传过来的。还有,会不会产生丢包,用UDP好还是TCP好?谢了! 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 http://dev.csdn.net/develop/article/26/26171.shtm 服务器的负载有效,对一一个socket连接来说就有一定的速度,这个是相对的,多线程下载应该是有多个socket同时连到服务器上,这样就对服务器产生了为多个客户服务的假象,从而提高了速度。所以应该用多个socket往服务器上连(个人理解!) 多个往服务器上联,那服务器用几个socket发送啊? 服务器当然也是多个Socket发送了,你每连一个socket到服务器,服务器就会给你连上的socket开辟一块缓冲区,各个socket的通讯都是独立的.当然一个socket上可以有多个连接.每个连接的缓冲区也是独立的. 楼上说的是TCP的吧。UDP的用一个socket不行吧,另外如果用一个socket,缓冲区是独立的,但每个时刻都是那一个socket在传,其它线程在等着,不是相当于单线程吗?还有如果用多个socket,接收端各线程用recvfrom接收时怎么区别当前所接收的包是属于哪一块文件,莫非每一块前面都要加个标记??? 继续等哦,谁解决了,我把剩下的分全给了。现在主要是几个socket和recvfrom怎么区别的问题???别外用TCP和UDP哪个好一些。 傳文件,TCP比UDP易用,如果你有能力自己管理好UDP的丟包和失序,那在丟包不嚴重的情況下,UDP的速度一定比TCP快。如果你使用多個SOCKET來分塊發送,那可以一:使用重疊I/O,只要一個綫程就可以管理多個SOCKET;二:使用多綫程,每個綫程一個SOCKET。至於怎麽區分,每一個地址端口對確定了唯一的一個連接,就不用區別了吧?倒是如果用UDP來傳的話,肯定是要給每個包加個序號的,UDP可以在某些TCP連接不好建立的情況下實現通訊,比如説兩個内網裏的主機互傳文件 是共用1个socket,同意fwoielkjrweierwerew说的,一个soket上可以有多个连接 楼上说的是用TCP吧。如果用UDP发送端用一个socket应该不行吧,无论哪个线程发送都要调用这个socket,那就不等于单线程吗。如果如果用多个socket又该怎么bind呢?莫非用几个端口,然后接收端也用不同的端口接收? 你想加快速度,当然需要使用多个连接一个连接的话,因为UDP是发送后不管,一个包太大,就可能丢弃,需要频繁的校验动作,使用多线程单连接,你必须通同步,等于一个时间只能有一个线程执行====单线程而使用多SOCKET,就可以避免这个同步问题,发挥最大效率不过一般传输文件不使用UDP,除非在内网 关于在matlab中画直方图(imhist)? 关于线程的问题 转载某高人的见解,我100%赞同 救命啊!!出错!standard mode: Invalid DPMI return from 037F:37F8 如何即可以浏览html,又可以编辑html文档?? 帮忙啊:列表的序列化 一个STL的问题 如何在MSFLEXGRID插件中动态显示数据 急!急!急!~~关于串口(MSCOMM)的设计 用vc2010如何开发一个瑞星主界面? 有关互斥 在一个程序里设计好的对话框界面如何移植到新的程序里呢
一个连接的话,因为UDP是发送后不管,一个包太大,就可能丢弃,
需要频繁的校验动作,使用多线程单连接,
你必须通同步,等于一个时间只能有一个线程执行====单线程
而使用多SOCKET,就可以避免这个同步问题,发挥最大效率
不过一般传输文件不使用UDP,除非在内网