社区
C#
帖子详情
socket 多线程 文件传输
huing
2009-11-13 05:44:53
文件传输分以下2种
1 多个大文件上传
2 大文件下载 //这个我知道是在server端多线程
参考 :http://hi.baidu.com/hack95/blog/item/bc023e7a0c6a4ae72f73b367.html
有人说第1种情况没有必要,但如果是大文件上传,不也应该是分块上传会快一点?
请指教第1种情况的开发思路。
...全文
737
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
多线程
文件传输
C#
多线程
和
Socket
网络编程精讲
【教学理念】 1、把“需要工作的人”变成“工作... 3、物美价廉:本着知识共享、服务社会宗旨,诣在为更多有需求者提供服务。 此外,提供源代码+答疑+上课讲义,为学生毕业设计、找工作面试等提供指导。
java
socket
多线程
文件传输
实例项目
使用java
socket
开发的
多线程
文件上传下载的实例项目,
多线程
并发测试中可以支持200个,可能由于我电脑的配置问题,一般在并发大于200时client端可能会出现"阻塞"问题,还请大家指教
socket
进行
多线程
进行
文件传输
关于
socket
多线程
通讯的论坛讨论,与在大家一起学习
C#
110,538
社区成员
642,577
社区内容
发帖
与我相关
我的任务
C#
.NET技术 C#
复制链接
扫一扫
分享
社区描述
.NET技术 C#
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
让您成为最强悍的C#开发者
试试用AI创作助手写篇文章吧
+ 用AI写文章