传输大文件,求大方向上的指导解决方法

传输大文件,求大方向上的指导
正在做一个服务端,使用的是wcf的net.tcp,客户端使用普通的winform或者wpf.
主要问题是,服务端,我应该选择什么样的技术呢?

目前已经完成的是使用wcf,但是发现在外网上传大文件,时不时的总是timeout,
请问,在服务端上,我是应该修改为什么方式,用户的体验会好一点呢?


------解决方案--------------------
呵呵 FTP
帮顶
------解决方案--------------------
文件的上传和下载无外乎HTTP、FTP、P2P这三种,楼主不妨搜索一下C#的P2P实现,断点续传哦
------解决方案--------------------
分成小块传输,首先传输文件大小,
然后服务器创建一个这么大的空文件,然后向客户端索取每一块。

如果传输失败,只要单独请求这一块就可以了。

服务器建立一个bitmap索引,表示哪些块传过了,哪些没有传,所有块都标记为传过了,就视为完成。
------解决方案--------------------
你做的“服务端”是什么方式呢?

如果不用动脑子,那么上传文件使用 new WebClient().UploadFile(...) 这就行了,而服务器端(也就一两句话),用不着这么纠结。

如果要自己把握,那么就如#3楼说所得一样,你要具体分析程序运行通讯的时序图,要设计一个包括3、4个信令的协议集合,然后分别在服务器端和客户端实现它。这基本上是考虑到效率、需要使用socket的时候才这样设计的。
------解决方案--------------------
引用:
引用:分成小块传输,首先传输文件大小,
然后服务器创建一个这么大的空文件,然后向客户端索取每一块。

如果传输失败,只要单独请求这一块就可以了。

服务器建立一个bitmap索引,表示哪些块传过了,哪些没有传,所有块都标记为传过了,就视为完成。
想法不错啊,但是如果我重新将客户端关闭,再打开,就不能续传了吧,您说的这个过程,只能……


事实上,在Windows操作系统中,每个程序看上去在一直执行,事实上被打开关闭了无数次——线程和进程的切换就是相当于把程序开关了很多次。

只要你在关闭程序之前记录下程序当前运行的状态(或者叫上下文),并且在下次打开的时候能恢复状态,程序就可以视作连续运行的。对你的程序来说,你的程序是状态无关的,客户端不需要从头发送数据,它只要根据服务器的请求发送特定的数据就可以了,无论它关闭与否。

就好像你用下载工具所谓“端点续传”,完全可以把程序关闭甚至电脑关闭,第二天再接着传。