0
我一直在爲此工作了兩天,我無法弄清楚。 我想通過TCP傳輸文件(服務器發送,客戶端接收)。NetworkStream接收端的文件名
我面臨的問題是我想實現一種方式讓接收方知道文件的文件名是什麼。 工作代碼我迄今
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();
}
因此,基本上發送一條消息之前,將只包含文件名的流? – 2013-02-21 22:45:28
是的。你應該首先包含文件名的長度,否則你將不知道文件名停止的地方,並且實際的文件開始,並且我會傳輸數據的大小以及好的措施。 – Lloyd 2013-02-21 22:46:54
感謝您的快速響應! 我編輯了我的代碼,首先發送一個帶有文件名的tcp消息。 – 2013-02-22 00:05:49