C# 文件传输

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C# 文件传输相关的知识,希望对你有一定的参考价值。

A机器上有a、b、c、d四个文件,现要通过socket将文件传送至B机器,我在传a文件时,传至一半时需要停止a文件的传输与接收,开始传b文件,该如何处理。
能不能说详细点,有没有示例代码?发我邮箱yuxiangbo_cn@163.com.
也不是只发一半,可能是a文件正在发送的时候,用户要求取消a文件的发送,改发b文件。
//发送端
NetworkStream netstream = client.GetStream();
BinaryWriter bw = new BinaryWriter(netstream);
filestream = new FileStream(@"c:\aa.txt", FileMode.Open, FileAccess.Read);
byte[] bb = new byte[1024];
while (filestream.Read(bb, 0, 1024)!= 0)

bw.Flush();
bw.Write(bb.Length);
bw.Write(bb);
bw.Flush();

string eofStr2 = "<EOF>";
bb = System.Text.Encoding.UTF8.GetBytes(eofStr2);
bw.Write(bb.Length);
bw.Write(bb);
bw.Flush();
filestream.Close();
怎么样停止a文件的发送与接收改发b文件。
//接收端部分代码
while (true)

string ss = System.Text.Encoding.UTF8.GetString(bye);
int x = ss.IndexOf("<EOF>");
if (x != -1)

break;

else

filestream.Write(bye, 0, bye.Length);
filestream.Flush();

bytelen = br.ReadInt32();
bye = br.ReadBytes(bytelen);

参考技术A while (start != 0)

int n = s.Send(b, end, start, SocketFlags.None); //用Socket的Send方法发送流
end += n;
start -= n;

原理是这样的,发送文件的时候,通过参数知道已经发送了多少,接着用if判断如果发送一半了,就停止发送,接着执行发送b的操作。
不过我不知道你为什么A只发送一半呢?
参考技术B 我看是在传输过程中有出错把。。。。
自己规定一个协议吧。还是比较简单的。

不管是什么情况,还是自己规定一个协议比较好。
简单的说,把文件拆分了发送。每次发送一部分,在这一部分前加一个信息头,包含后面数据的描述。包括数据长度,组成部分。
这样的协议规定好了,还可以以来实现多线程的文件传输。

C#获取response传输的数据大小

对服务器端传给客户端的数据进行统一管理,服务端如何使用response对象再次获取该数据,验证数据的大小?

....全局配置文件..的response事件.即可将您所有将要返回到客户端的数据抓取出来.
这是办法1.
然后获取大小?
跟获取request的方式一样.都有一个data的存储区域的.打上断点看一下即可.

第二个办法.
注入HttpModule.重写返回过程.

两个办法仅仅只是说抓取点不同而已.实质上是没有太大区别的
参考技术A ....全局配置文件..的response事件.即可将您所有将要返回到客户端的数据抓取出来.
这是办法1.
然后获取大小?
跟获取request的方式一样.都有一个data的存储区域的.打上断点看一下即可.

第二个办法.
注入HttpModule.重写返回过程.

两个办法仅仅只是说抓取点不同而已.实质上是没有太大区别的
参考技术B 不明白 你要做啥 参考技术C 你向客户端传送的时候,累加数据包??追问

服务器向客户端传送的数据有大有小,对于小数据没必要进行gizp压缩,只有对于大数据进行压缩才会效率更高,所以想要对服务器端传出的数据警醒一一验证,那就要想办法从服务器的response对象中获取传输的数据判断是否要压缩?

以上是关于C# 文件传输的主要内容,如果未能解决你的问题,请参考以下文章

文件传输(C#)

将云媒体文件编码为可通过 C# 流式传输的 DASH

如何使用 jabber net 在 c# Windows 应用程序中实现文件传输

在 C# 中使用 WinSCP 传输仅包含数字而不包含字母的文件?

求一个C#最简单的TCP传输信息例子(实现聊天和传送文件,再简单点实现聊天也行)

从 C 程序到 C# 的数据传输