我的程序是在wcf下的,现在要实现客户端之间的文件传输,想听听大家的思路

解决方案 »

  1.   

    要不要跨internet?把wcf的流设置成Streamed
      

  2.   

    然后自己加上对流的进度控制,就是自己控制断点续传。wcf只是通讯手段。
      

  3.   

    谢谢楼上回复
    要跨我是这么想的
    首先,我只想用wcf服务器段建立连接,不想让文件流经由服务器端,这样耗内存
    其次,本来就是客户端之间的事情,根本与服务器端没什么关系了,所以,一旦建立连接以后就应该由客户端自己来处理我想大家各抒己见,再次感谢
      

  4.   

    可以的啊,这样每个客户端就是server了啊,这样对于每次通讯你都要临时起一个servicehost来通讯了,因为有可能客户端在一台机器上开多个,如果你写死了,就会报错了。对于这样的功能,建议你还是用tcp或者udp,wcf一般是针对server的。
      

  5.   

    和我想得差不多,以前用remoting实现过
    --对于这样的功能,建议你还是用tcp或者udp,wcf一般是针对server的。
    现在一般的文件传输工具应该是这样的,但是现在所有的东西都已经在wcf下了,在用udp之类的好像有点乱啊
    能不能有好点的解决方案再次感谢你
      

  6.   

    另外,不知道tmxk2002是否实现过通过服务端来传输文件(大文件),这样很耗内存的,如果1000个用户同时传输1G的文件,这样服务器会崩溃的
    哈哈
      

  7.   

    传输文件,关键是控制它传输的速度,你的服务器只是做中转,所以保证进和出的速度一直,不管多少用户都没问题,只是用户多了,大家的速度就都慢下来了。wcf对于这种通讯是不合适的,因为它要明显的去建立一个host,而且和机器有关系,除非刻意在客户端机器上启动一个服务,否则一个host就必须占用一个端口,开多个客户端就不好控制了。但客户端的机器怎么会让你去配置这个服务呢?
      

  8.   

    --传输文件,关键是控制它传输的速度,你的服务器只是做中转,所以保证进和出的速度一直,不管多少用户都没问题,只是用户多了,大家的速度就都慢下来了。
    正常来说服务器就是做中转,他的作用就是查找客户端1请求目标(客户端2),这样客户端1和2之间就能自己来传输文件了但是现在的情况是,就如你第一次回复的那样使用Stream,这样他必定会在服务器上存在,必定要消耗内存
    --wcf对于这种通讯是不合适的,因为它要明显的去建立一个host,而且和机器有关系,除非刻意在客户端机器上启动一个服务,否则一个host就必须占用一个端口,开多个客户端就不好控制了。但客户端的机器怎么会让你去配置这个服务呢?
    后面的关于如何配置这个服务确实存在点问题,但是可以在安装客户端时来实现细节的东西
      

  9.   

    但是现在的情况是,就如你第一次回复的那样使用Stream,这样他必定会在服务器上存在,必定要消耗内存 
    -------------------------------------------------------------------------------------
    你是转发,收到立即就出去了,虽然你用Stream,但设置缓存的大小,这样当很多人连上来后,大家就都会慢,因为你设置的缓存就这么大,当然你可以设置到你机器能承受的最大值。你的这个功能,确实对服务器的内存要求比较高,当然内存配置就要大些。你也可以先保存到磁盘,然后再转出去,相当于自己建立一个虚拟内存一样。
      

  10.   

    我认为这样实现方式对于我的需求是满足不了的换中方式,用tcp等其他方式来做
      

  11.   

    tcp如果通过服务器中转,一样的会有这个问题,特别是你是跨网的,先前回答别人的问题的时候特意看了下qq实现的思路,发几个连接给你参考下
    http://blog.csdn.net/woashizhangsi/archive/2008/10/03/3014626.aspx 
    http://hi.baidu.com/sunlovestar/blog/item/88b934ad417d1c0a4b36d687.html http://hi.baidu.com/sunlovestar/blog/item/081991ee5922572a2df534ea.html http://blog.54master.com/index.php/438198/viewspace-32018