社区
C#
帖子详情
socket 多线程 文件传输
huing
2009-11-13 05:44:53
文件传输分以下2种
1 多个大文件上传
2 大文件下载 //这个我知道是在server端多线程
参考 :http://hi.baidu.com/hack95/blog/item/bc023e7a0c6a4ae72f73b367.html
有人说第1种情况没有必要,但如果是大文件上传,不也应该是分块上传会快一点?
请指教第1种情况的开发思路。
...全文
738
26
打赏
收藏
socket 多线程 文件传输
文件传输分以下2种 1 多个大文件上传 2 大文件下载 //这个我知道是在server端多线程 参考 :http://hi.baidu.com/hack95/blog/item/bc023e7a0c6a4ae72f73b367.html 有人说第1种情况没有必要,但如果是大文件上传,不也应该是分块上传会快一点? 请指教第1种情况的开发思路。
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
26 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
yanfuliang
2011-04-27
打赏
举报
回复
期待...
nzzb1985
2010-05-24
打赏
举报
回复
学习!
V68V6
2009-11-16
打赏
举报
回复
[Quote=引用 17 楼 huing 的回复:]
楼上几位的建议都不错,最简单的实现方式是在server端布置一个ftpserver,但是现在情况就是server端不能自己设置(不能架ftpserver),而且client端还是要用winform的,所以才会去考虑用socket传输
[/Quote]
我估计你也是服务器端有限制,多半是不允许你开ftp服务的权限。。。。
huing
2009-11-16
打赏
举报
回复
正在看以下几个例子,多数是wcf的
File Transfer using WCF and Socket
http://www.codeproject.com/KB/webservices/wcftransfer.aspx
Sending Files in Chunks with MTOM Web Services and .NET 2.0
http://www.codeproject.com/KB/XML/MTOMWebServices.aspx
Progress Indication while Uploading/Downloading Files using WCF
http://www.codeproject.com/KB/WCF/WCF_FileTransfer_Progress.aspx
File Transfer using Socket Application in C#.Net 2
http://www.codeproject.com/KB/cs/SocketApplication.aspx
WCF TCP-based File Server
http://www.codeproject.com/KB/WCF/wcffileserver.aspx
SharpBITS.NET - wrapper for BITS API
http://www.codeproject.com/KB/IP/sharpBITS.aspx
shalen520
2009-11-16
打赏
举报
回复
[Quote=引用 13 楼 xiaoyuer1985 的回复:]
分开传和一起传不都一样大的文件吗
[/Quote]
没错,不过同样多的一碗饭,一大口全吃下和小口小口吃,还是有分别的
因为一口吃下会噎死~
shalen520
2009-11-16
打赏
举报
回复
[Quote=引用 20 楼 zcl24 的回复:]
用UDP会快一点
但是UDP需要很多转输中对数据正确性的验证。
[/Quote]
要实现可靠的UDP传输还是有点难度的,不过也不算太难
zcl24
2009-11-16
打赏
举报
回复
用UDP会快一点
但是UDP需要很多转输中对数据正确性的验证。
huing
2009-11-16
打赏
举报
回复
周3来结贴
huing
2009-11-16
打赏
举报
回复
差不多就是要自己写一个仿FTP程序
huing
2009-11-16
打赏
举报
回复
楼上几位的建议都不错,最简单的实现方式是在server端布置一个ftpserver,但是现在情况就是server端不能自己设置(不能架ftpserver),而且client端还是要用winform的,所以才会去考虑用socket传输
Taiyangchen
2009-11-16
打赏
举报
回复
[Quote=引用 6 楼 qldsrx 的回复:]
其实多线程文件上传下载不难,只要你解决了文件断点续传的问题,多线程上传下载自然不是问题,更不用说什么大文件了。
几个月前本来也想写一个高效仿FTP程序的,但是时间不够,最后程序写了一半停下了,主要是技术不过关,定义协议和分配内存上把握不好。不过后来我用WCF实现了文件分段压缩传输,速度比普通传输快上30倍左右。
[/Quote]up
cqsfd
2009-11-13
打赏
举报
回复
也来帮你顶下贴
楼主真幸福,这么多高人来指点
悔说话的哑巴
2009-11-13
打赏
举报
回复
呵呵 老妖的不错
xiaoyuer1985
2009-11-13
打赏
举报
回复
[Quote=引用 9 楼 shalen520 的回复:]
引用 3 楼 huing 的回复:
假设对每一个连接的速度有限制呢?(单线程不能充分利用带宽)
该如何实现多线程上传?
按一定大小,分块,编号
用线程池,使用N个线程,每个线程传一块传,传完一块服务器确认已经收到就从队列中移除并写日志
问题的关键就是要自己定好控制协议,比如传递块数,块编号,计算校验值 等等;
另外要注意将控制流和数据流分离
做的更精细一些,还要考虑充分利用每个数据包的载荷,数据压缩等问题...
[/Quote]
分开传和一起传不都一样大的文件吗
V68V6
2009-11-13
打赏
举报
回复
多线程断点续传研究
tiandiyouwo1
2009-11-13
打赏
举报
回复
up
V68V6
2009-11-13
打赏
举报
回复
LZ为什么要走socket协议的路子?
File Transfer using WCF and Socket
shalen520
2009-11-13
打赏
举报
回复
[Quote=引用 3 楼 huing 的回复:]
假设对每一个连接的速度有限制呢?(单线程不能充分利用带宽)
该如何实现多线程上传?
[/Quote]
按一定大小,分块,编号
用线程池,使用N个线程,每个线程传一块传,传完一块服务器确认已经收到就从队列中移除并写日志
问题的关键就是要自己定好控制协议,比如传递块数,块编号,计算校验值 等等;
另外要注意将控制流和数据流分离
做的更精细一些,还要考虑充分利用每个数据包的载荷,数据压缩等问题...
绝代坏坏
2009-11-13
打赏
举报
回复
顶六楼的
shalen520
2009-11-13
打赏
举报
回复
[Quote=引用 4 楼 huing 的回复:]
引用 2 楼 agentianle 的回复:
“但如果是大文件上传,不也应该是分块上传会快一点?”
呵呵,大文件分块之后还是大文件吗?
只是上传的时候分开,在server端吧数据接收完后,byte[0]+byte[1]后再生成文件,
[/Quote]
呃,大文件用 byte[]+...然后写文件,不怕OOM?
fs.seek;
fs.write;
比较好吧,还可以实现断点续传
加载更多回复(6)
Socket
多线程
文件传输
用Delphi XE5 编写的
Socket
多线程
文件传输
客户端是单线程 服务器端是
多线程
记录类型与文件流联合传输,通过记录类型传递信息给服务器 传输速度快 与网络拷贝相同 服务器端会通过MD5码验证接收到文件的正确性 并返回结果给客户端
VC
socket
多线程
文件传输
VC
socket
多线程
文件传输
java
socket
多线程
文件传输
实例项目
使用java
socket
开发的
多线程
文件上传下载的实例项目,
多线程
并发测试中可以支持200个,可能由于我电脑的配置问题,一般在并发大于200时client端可能会出现"阻塞"问题,还请大家指教
socket
进行
多线程
进行
文件传输
关于
socket
多线程
通讯的论坛讨论,与在大家一起学习
Socket
多线程
文件传输
至服务器端 客户端!
实现
Socket
多线程
多个客户端同时向服务器端传输文件,解决并发问题和
多线程
。解决一个文件夹下多个
文件传输
,20秒向服务器端传输一个文件,直到传输完毕关闭连接状态提示没有文件。如果想发布到tomcat下 有问题的话加我QQ632167558 此程序用来学习。此程序为客户端
C#
110,552
社区成员
642,562
社区内容
发帖
与我相关
我的任务
C#
.NET技术 C#
复制链接
扫一扫
分享
社区描述
.NET技术 C#
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
让您成为最强悍的C#开发者
试试用AI创作助手写篇文章吧
+ 用AI写文章