在c#中通过TCP发送XML格式的消息

本文关键字:XML 格式 消息 发送 TCP | 更新日期: 2023-09-27 17:49:43

我有一个c# TCP聊天程序。目前,我已经格式化了使用字符串发送的消息,即"login"消息以"3"开头,然后是"U:",然后是用户名等。

我认为这个方法在某种程度上是非常粗糙的,它不是真正的可读和不标准化。在早期的研究中,我读到我可以使用XML格式化我的消息,但我不知道从哪里开始。我是不是要创建一个字符串生成器然后给它加上.append("<Login>"+message)这样的标签?

在c#中通过TCP发送XML格式的消息

处理此类问题的最常用方法是使用序列化。序列化是将内存中的对象转换为可以轻松"在线"传输的格式的过程,而反序列化是将序列化格式转换回对象的相反过程。. net对XML和二进制序列化具有很好的开箱即用支持,但是还有其他方法可以实现这一点。这里有一个链接可以让你开始:

http://msdn.microsoft.com/en-us/library/7ay27kt9 (VS.71) . aspx

您可以通过连接发送任何您喜欢的内容-只要它只是用于您的程序-您选择什么并不重要。Xml可能会给您带来一些好处,因为它适合于某种更结构化的消息,而且网上有许多关于Xml的类、工具和知识。JSon格式可能是另一种选择-如果您想要基于web,它将使创建JavaScript客户端更容易。

除非有第三方能够读取这些消息的要求,否则我可能会倾向于二进制序列化,因为它具有更紧凑的格式。

也就是说,我可能只使用WCF而不是直接使用TCP。

如果你想了解更多关于XML序列化的知识,那么最常用的方法是:

  • 使用XSD.exe生成带有属性的stronly类型c#对象来控制XML序列化,然后使用XmlSerializer序列化和反序列化XML。(推荐)
  • 使用XmlDocument类

你可以自己把我们的XML写成一个字符串,但是最好使用。net框架中提供的序列化方法,因为它使事情变得相当容易,并且减少了你犯错误和无意中开始处理无效XML的机会。