0

我有一个简单的 TCP 客户端和侦听器代码。我想将文件名与文件数据一起传递。有没有办法将文件名与文件数据一起发送并从网络流中单独读取文件名而不破坏文件数据?

4

1 回答 1

0

这是一种发送不应损坏的文件名和数据的方法。如果您使用序列化,则不必单独手动写入和读取文件名和内容,您可以将其作为单个对象发送和读取,并让框架处理对各个属性的序列化和反序列化。

[SerializableAttribute]
class Data
{
    public string FileName;
    public byte[] FileData;
}

客户

string filePath = @"c:\temp\myfile.txt";
TcpClient client = new TcpClient();
client.Connect("localhost", 8888);

Data data = new Data();
data.FileName = Path.GetFileName(filePath);
data.FileData = File.ReadAllBytes(filePath);

BinaryFormatter formatter = new BinaryFormatter();
formatter.Serialize( client.GetStream(), data);
client.Close();

服务器

TcpListener listener = new TcpListener(IPAddress.Loopback, 8888);
listener.Start();
TcpClient client = listener.AcceptTcpClient();

BinaryFormatter formatter = new BinaryFormatter();
Data data = (Data)formatter.Deserialize(client.GetStream());
于 2013-10-07T14:45:15.223 回答