问题:
1、UDP广播 传送多个文件到几十台机子上,怎么写???2、传送多个文件到20台机子上,用UDP广播还是用TCP 方式来做?哪种好???

解决方案 »

  1.   

    首先,如果你一定要用主动发,被动收的方式向多个目的传送数据,那么就用UDP广播的方式(组播也可以),但因为UDP可能丢包或包内容错误的情况。但是,我比较倾向在文件所存放的机器上开启FTP服务,其他机器通过FTP取文件。不知道这个方式和你的应用有没有冲突。FTP是通过TCP通讯实现的,所以在数据的正确性和完整性上有保障。
      

  2.   

    传文件?
    还是用tcp吧。
    udp的话,如果需要重传,则非常麻烦,代价比tcp大很多很多
      

  3.   

    TO:WizardK 
       
      我觉得用你说的FTP方式更好、更方便些,但是我不知道“在文件所存放的机器上开启FTP服务”?怎么开启???
      

  4.   

    问一下程序更新怎么做?每次更新时在服务器电脑上将更新的文件复制到一个文件夹里,然后通过网络 把这些文件传送到20个客户端电脑上,客户端电脑收到更新文件后,将当前运行的系统停止,然后替换掉以前的文件。请问我应该怎么将这些文件传到每个客户端电脑上呢?是用UDP广播还是TCP方式还是FTP???
      

  5.   

    首先,服务器上的程序开启FTP服务,这个你可以参考codeproject上的ftp server类,名字好像是cftpserver,当前最高稳定版本是4.2,是开源的,你可以在里面看到如何开启FTP服务。对于升级来说,一般都是客户端的程序由两部分组成,一部分是update程序,一部分是application。
    update负责检查是否需要升级,这个就涉及你的版本控制,你可以把需要升级的文件打包成ZIP,文件名里定义版本号,然后通过update程序判断是否下载。如果需要升级,则从服务器下载,并放到一个指定位置。下一步就是update程序将application关闭(如果他现在在运行的话),不能强行关闭,你可以向application发消息,等待他自己关闭。再下面就是通过pkzip将升级ZIP文件解压到指定位置覆盖原application的文件。最后开启application,自己退出即可。总的流程就是这样:
    case 1:
    update运行->是否需要下载,即当前application版本号是否与服务器升级文件版本号一致?->不需要升级->运行application,自己退出
    case 2:
    update运行->是否需要下载,即当前application版本号是否与服务器升级文件版本号一致?->需要升级->下载升级包->关闭application->解压覆盖升级application->删除升级包->运行application,自己退出