C#Tcp网络编程 如何判断文件发送完毕?

itneste itneste 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区
1.c#tcp网络编程中,当客户端连接服务器之后,服务器要根据客户端的请求做不同的几个步骤,没做完一个步骤就要向客户端发送一个结果(如果出错可以提示客户端出错位置),在客户端如何来接受信息呢?会不会所有信息都被一个networkstream.read全部读取出来呢?
2.客户端代码

NetworkStream ns = tc.GetStream();
FileStream fs = new FileStream(@"F:\C#.NET网络编程.pdf", FileMode.OpenOrCreate, FileAccess.Read);
BinaryReader br = new BinaryReader(fs);
int count = 0;
double size = 0;
byte[] b = new byte[2048];
while ((count = br.Read(b, 0, 2048)) > 0)
{
try
{
ns.Write(b, 0, count);
size += count;
ns.Flush();
}
catch
{
Console.WriteLine("服务器已关闭!发送字节数为:" + size);
return;
}
}
Console.WriteLine("发送:" + string.Format("{0:F}", size / 1024) + " KB");

Console.WriteLine("文件传输完毕!");
//ns.Close();
//fs.Close();
//br.Close();
//tc.Close();

服务器端读取客户端发送的文件的时候用while((count =ClientNs.Read(b, 0, 2048)) > 0),ClientNs为networkstream对象,现在问题就是:
如果我把客户端最后的四行代码注释起来,服务端就一直停在while这里,只有当我把后四行写上才可以,怎样可以在不关闭连接的情况下来让服务器知道所有的文件是否都发送完成?如果我发送完文件了,接着又给服务器发送了一条命令,服务器会不会把命令也当成文件内容了呢?(和第一个问题相似),
本人刚学习网络编程,又很多地方都不懂,望大虾们给予解答,谢谢~~~
...全文
评论 24
收藏 已收藏
分享
返回顶部
itneste
C# 111,129 成员 642,539 内容