████████【网络编程】文件传输线程与内存,恭请思归,孟子E章,Herry和海波三位大侠及其他星级及角级既无级高手入内!

csdn8008 2003-10-20 08:41:10
关于文件传输的重要问题!解决散分.

三个问题如下:
1、读写。
传输时用
StreamReader rd = new StreamReader(strm);
byte[] mb = new byte[fbytes];
FileStream fstrm = new FileStream(FileName,FileMode.OpenOrCreate,FileAccess.Write);
fstrm.Write(mby,0,startmbyte);
A问题:
这样,将文件全部读入到内存,如果是大文件,就会死机。那如果偶尔要传输大文件怎么办呢(一般是小文件)?

2、速度。
发送接收文件都用新线程
Thread th = new Thread(new ThreadStart(sendfile));
th.Start();
B问题:
但如果文件稍大,传输过程还是会很慢很慢,怎么办呢?能不能将任务分解成几个线程同时发送或接收?
C问题:
具体又怎么实现呢?
...全文
42 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
azev 2003-12-22
  • 打赏
  • 举报
回复
fav
csdn8008 2003-10-21
  • 打赏
  • 举报
回复
多谢 gujunyan(ivy阿亮) ,你的方法用了,好。
不过,内存消耗少了,但出现文件传不全的问题,
7468K的文件只能接收到1883K,这是为什么呢?是不是哪儿有问题了,代码贴出来,请指正。
帮忙!谢谢!

发送文件部分代码
byte[] b=new byte[1024];
int bytes;
try
{
bytes=fileReader.Read(b,0,1024);
while(bytes>0)
{
//从文件读入
fileReader.Read(b,0,bytes);
ns.Write(b,0,bytes);
bytes=fileReader.Read(b,0,1024);
}
}


接收文件部分代码
byte[] b=new byte[1024];
int count;
try
{
count=nsl.Read(b,0,1024);
while(count>0)
{
nsl.Read(b,0,count);
fileWriter.Write(b,0,count);
count=nsl.Read(b,0,1024);
}
}
顾君彦 2003-10-21
  • 打赏
  • 举报
回复
我那段程序是做socket代理的,就是经常说的端口映射。
从这个流里读数据
count=_InStream.Read(b,0,1024);
写到这个流里
_OutStream.Write(b,0,count);
并同时写到文件里。
FileInStream.Write(b,0,count);
我只是摘一段代码出来,希望你能从中理解我说的读多少写多少。
不要一下子开一个很大的byte数组后读,很吃内存,容易受到攻击的

csdn8008 2003-10-21
  • 打赏
  • 举报
回复
byte[] b=new byte[1];
ajex 2003-10-21
  • 打赏
  • 举报
回复
你可以自定义缓冲区的大小呀.不会把内存都用光的.
csdn8008 2003-10-21
  • 打赏
  • 举报
回复
FileInStream.Write(b,0,count);
_OutStream.Write(b,0,count);

什么???
顾君彦 2003-10-20
  • 打赏
  • 举报
回复

传文件最好边读边写,否则,你不怕别人攻击你的服务器啊,玩命的给你传,内存不久就用光了。
给你一段代码,我是那样做的。
通信时的一段代码,边读边写。
只能参考:
byte[] b=new byte[1024];
int count;
try
{
count=_InStream.Read(b,0,1024);
while(count>0)
{
FileInStream.Write(b,0,count);
_OutStream.Write(b,0,count);
count=_InStream.Read(b,0,1024);
}
}
catch
{

}
finally
{
FileInStream.Close();
_InStream.Close();
_OutStream.Close();
}
维她奶 2003-10-20
  • 打赏
  • 举报
回复
up

110,533

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧