【发布时间】:2017-06-25 13:30:08
【问题描述】:
我有以下代码将图片发送到接收应用程序
public static void sendFile(string file, string ip)
{
using (TcpClient client = new TcpClient())
{
client.Connect(IPAddress.Parse(ip), 44451);
//Console.WriteLine(ip);
NetworkStream nwStream = client.GetStream();
MemoryStream ms = new MemoryStream();
Image x = Image.FromFile(file);
x.Save(ms, x.RawFormat);
byte[] bytesToSend = ms.ToArray();
nwStream.Write(bytesToSend, 0, bytesToSend.Length);
nwStream.Flush();
client.Close();
}
}
我在另一端收到文件
NetworkStream nwStream = clientCopy.GetStream();
byte[] buffer = new byte[clientCopy.ReceiveBufferSize];
//---read incoming stream---
int bytesRead = nwStream.Read(buffer, 0, clientCopy.ReceiveBufferSize);
MemoryStream ms = new MemoryStream(buffer);
Image returnImage = Image.FromStream(ms);
//ms.Flush();
//ms.Close();
String path;
if (!Directory.Exists(path = @"C:\Users\acer\AppData\Roaming\test"))
{
Directory.CreateDirectory(@"C:\Users\acer\AppData\Roaming\test");
}
string format;
if (ImageFormat.Jpeg.Equals(returnImage.RawFormat))
{
format = ".jpg";
}
else if (ImageFormat.Png.Equals(returnImage.RawFormat))
{
format = ".png";
}
else
{
format = ".jpg";
}
returnImage.Save(@"C:\Users\acer\AppData\Roaming\test\default_pic" + format, returnImage.RawFormat);
如果我发送的图片很小(大约 =100kb 左右的文件,则接收图片但只有一半的图片加载。我知道在读取所有数据之前读取流的方法,但我不知道如何正确实现它。
谢谢
【问题讨论】:
标签: c# file tcpclient transfer