方法1:每台机用TCP连接服务器,请求数据.
这种方法令服务器的网络和硬盘负载都很重.
方法2:用UDP的广播来发数据(即发送数据到192.168.10.255这样的地址)
方法3;用UDP的多播来发数据.
我是想问一下多播及广播方式传输速度与客户机台数有没有关系?
大家有没有其它好的方案呢?
大家积极参与啊,好的方案另外开贴给分.

解决方案 »

  1.   

    一 先发个 UDP 广播, 告诉其它主机你马上要发送文件了,让其它主机准备好接收.
    Send("File_Send_Request", 192.168.10.255, UDP)二 每个主机在收到广播后,立刻加入多播组中.三 你可以向多播组发送文件了.提醒一点:可以在第一步的广播信息中告知其它主机加入哪个多播组
      

  2.   

    要看具体的硬件网域结构,如果不是支持组播的网络如集线器,组播跟广播是一样的。对于交换机得看型号,路由器一般都是支持的。广播?呵呵.小网域倒没什么,大了又是集线器,估计有点头痛。而且udp是不可靠的,需要自己来判断是否正确接收到每个数据包.如果文件很重要,还是推荐用tcp吧,长连接,加crc等检验.
      

  3.   

    如果不是发送音视频流数据的话,不建议使用组播技术,UDP不可靠性.
       
       这样处理起来要比TCP复杂很多,,
      

  4.   

    建议使用 BT技术,这样服务器的负担就比较轻了反正现在BT的服务器和客户端都有源代码使用BT技术的话,建议在客户端程序限制连接数,减少网络负载峰值
      

  5.   

    用BT技术比较适合传送大文件,如果文件比较小的话,使用HTTP、FTP方式是最方便的。   使用BT技术时.
       每台机子可以先从服务器读取不同部分的数据,然后已读取数据的机子就可以成为其它机子的种子.这样服务器负担就轻多了。客户机可以边读边做种让机子读取。
       
       如果使用组播技术的话,传送文件就没法知道客户机是否接收到数据。
       客户机要加入接收数据,有一个加入组播组的过程,(服务器没法知道有哪些客户机加入它的组播组[其它通知方法不考虑]);
       这样还要求等所有的客户机加入组播组了,服务器才能开始发送数据,不然后面加入的客户机只能接收后半部分的数据(组播技术中,客户机是没法要求服务器重头发送数据,不然就不是组播了)。
       组播的速度比较难控制,如果局域网比较大,负载不均衡的话,那部分客户机接收不到部分数据是很正常的事情。
      

  6.   

    局域网中,在一台机发文件给100台机
    方法1:每台机用TCP连接服务器,请求数据
    -------这种方法足够了。
      

  7.   

    1G的文件100台机就有100G,假如服务器传传输速度是8M/秒的话,要3个半小时.
    我的设想是要5分钟实现.
      

  8.   

    我晕,楼上的帐算的不对呀。难道你要一个文件传给一台机子,等传完再传给另一台机子吗?WINDOWS是多任务,多线程的操作嘛,象你这样算,看来只有在速度上加快了。等待更快速度的网络设备吧!即使1G/s,100台还需要2分钟!研究一下象迅雷这样的软件看一下
      

  9.   

    我感觉用TCP也就够了,UDP的工作量会变的很大,结果可能是性能也没有想象中的那么好。
    对TCP来说,100台机器并不是什么大的数目。
      

  10.   

    to : zyp2kyear(E腾鸟)
    速度不是算出来的。
    你说的1G/秒,100台机要2分钟,但有些数据不是这样算出来的,有其它技巧。
    我正在设想一个方法,
    5分钟向局域网内100台机各分发1G的文件,
    应该是行得通的。
    我的设想和 wolong98(Wangyang)说的差不多。
      

  11.   

    引用:
    ========================================================================================
    我晕,楼上的帐算的不对呀。难道你要一个文件传给一台机子,等传完再传给另一台机子吗?WINDOWS是多任务,多线程的操作嘛,象你这样算,看来只有在速度上加快了。等待更快速度的网络设备吧!即使1G/s,100台还需要2分钟!研究一下象迅雷这样的软件看一下
    ========================================================================================并不是说传完一台再传一台,
    但服务器的带宽的有限的呀,就算你开10000个线程也好,100M的网络大概也只能达到8M左右吧。所以我的计算是没错的。
    我是以服务器带宽为准计算的,无论你开多少个线程也好,速度最快都是12.5M/秒。
    照 wwwllg(wwwllg) 的说法就是要3个半小时,我相信5分钟内应该可以实现。
      

  12.   

    可不可这样a发给b,发送完成,然后a,b发给c,d,然后a,b,c,d发给e,f,g,h.依次类推,估计要用14分钟。不知道这样是否可行?
      

  13.   

    100M比特的网络换成字节是12.5M字节/秒,加上损耗大概是8M字节/秒左右.这样算不对吗?
    这里不是盯字眼的地方.
      

  14.   

    1G的文件100台机就有100G,假如服务器传传输速度是8M/秒的话,要3个半小时.
    我的设想是要5分钟实现.
    -------------
    硬盘对考,看要几分钟?
      

  15.   

    5分钟太理想了,除非你的网络全部是 1000M/s的网络设备,再加上BT方法..
      

  16.   

    用UDP的多播来发数据,多播到了ip层就可以过滤!