接收端的NetworkStream文件名
本文关键字:文件名 NetworkStream 接收端 | 更新日期: 2023-09-27 18:00:32
我已经做了两天了,我想不通。我想通过TCP传输文件(服务器发送,客户端接收)。
我面临的问题是,我想实现一种方法,让接收方知道它得到的文件的文件名是什么。工作代码到目前为止我有
public void SendFile(string path, string IP)
{
TcpClient client = new TcpClient();
client.Connect(IP, 1095);
using (NetworkStream networkStream = client.GetStream())
using (FileStream fileStream = File.OpenRead(path))
{
ASCIIEncoding asci = new ASCIIEncoding();
byte[] b = asci.GetBytes(path);
networkStream.Write(b, 0, b.Length);
networkStream.Flush();
fileStream.CopyTo(networkStream);
}
client.Close();
}
private void ListenForFile()
{
TcpListener listener = new TcpListener(IPAddress.Any, 1095);
listener.Start();
using (TcpClient incoming = listener.AcceptTcpClient())
using (NetworkStream networkStream = incoming.GetStream())
using (FileStream fileStream = File.OpenWrite(@pathName + @"'something.extension"))
{
networkStream.CopyTo(fileStream);
}
listener.Stop();
}
NetworkStream
没有文件的概念,它只是一个用于流式字节缓冲区的类。您将要做的是想出某种形式的协议来将文件名发送到客户端。
您可以先传输文件名和文件名的长度,然后再传输文件大小,然后传输实际的文件内容。
客户端可以读入文件名长度,读入文件名,读入文件大小,然后读入文件数据。