序列化对象准备通过TCPClient Stream发送

Luk*_*uke 5 c# serialization tcp tcplistener tcpclient

我有一个服务器和客户端使用TcpListener和设置TcpClient.

我想将一个对象发送到我的服务器应用程序进行处理.

我已经发现了using System.Runtime.Serialization以下文档,但是我不想四处寻找我正在以冗长的方式做这件事.

问题:通过TCP流处理和发送对象的最佳方法是什么?

发送和接收.

这是我的对象的一个​​例子:

// Create a new house to send
house newHouse = new house();

// Set variables
newHouse.street = "Mill Lane";
newHouse.postcode = "LO1 BT5";
newHouse.house_number = 11;
newHouse.house_id = 1;
newHouse.house_town = "London";
Run Code Online (Sandbox Code Playgroud)

Fis*_*aen 9

假设您有一个类House(在连接的两端都可用),如下所示:

[Serializable]
public class House
{
    public string Street { get; set; }
    public string ZipCode { get; set; }
    public int Number { get; set; }
    public int Id { get; set; }
    public string Town { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

您可以将类序列化为MemoryStream.然后,您可以在您的TcpClient连接中使用如下:

// Create a new house to send house and set values.
var newHouse = new House
    {
        Street = "Mill Lane", 
        ZipCode = "LO1 BT5", 
        Number = 11, 
        Id = 1, 
        Town = "London"
    };  

var xmlSerializer = new XmlSerializer(typeof(House));
var networkStream = tcpClient.GetStream();
if (networkStream.CanWrite)
{
    xmlSerializer.Serialize(networkStream, newHouse);
}
Run Code Online (Sandbox Code Playgroud)

当然,你必须做一些调查才能让程序毫无例外地运行.(例如,检查memoryStream.Length不要大于int,aso),但我希望我给你正确的建议,以帮助你的方式;-)

  • 您可以直接序列化为tcpClient的流. (2认同)