████████【网络编程】文件传输线程与内存,恭请思归,孟子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问题:
具体又怎么实现呢?
...全文
137 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
内容概要:本文围绕基于交替方向乘子法(ADMM)的多主体综合能源系统分布式协同优化展开研究,提出了一种兼顾系统整体性能与各主体隐私保护的分布式优化框架,并提供了完整的Matlab代码实现。研究详细构建了包含电、热、气等多种能源形式耦合的多主体综合能源系统模型,设计了基于ADMM算法的分布式求解机制,实现了在去中心化架构下的协同优化调度。文中深入分析了算法的迭代流程、收敛条件及关键参数(如惩罚因子)对优化性能的影响,通过仿真实验验证了该方法在提升能源利用效率、促进多能协同、降低运行成本方面的有效性,适用于园区微网、能源互联网等复杂场景下的分布式决策需求。; 适合人群:具备一定优化理论基础和Matlab编程能力的研究生、科研人员及从事综合能源系统、智能电网、分布式能源管理等相关领域的工程技术人员。; 使用场景及目标:①实现多主体综合能源系统中电、热、气等多能流的协同调度与优化运行;②解决传统集中式优化带来的数据隐私泄露和计算负担过重问题,支持去中心化的分布式决策模式;③为能源互联网、智慧园区、微电网等实际应用场景提供可复现、易拓展的算法原型与技术参考。; 阅读建议:建议读者结合所提供的Matlab代码进行动手实践,重点理解ADMM算法中增广拉格朗日函数的构造、变量更新规则及收敛判据的实现过程,关注惩罚参数设置对算法收敛速度与稳定性的影响,可进一步尝试将其拓展应用于其他分布式优化问题或与其他智能算法进行性能对比研究。

111,129

社区成员

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

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

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