C#传递对象TCPListener

时间:2010-10-12 15:56:44

标签: c# networking tcplistener

我是C#网络编程的新手。我发现TCPListener类对于在计算机之间发送文本非常有用,但我想知道是否可以在机器之间直接发送对象(假设客户端和服务器都具有类定义),而不必先将它们转换为字符串然后制作带有该数据的对象。

谢谢,

PM

3 个答案:

答案 0 :(得分:2)

您的问题的一个解决方案是使用WCF并使用TCP绑定将对象标记为Serializable。但这与您已经拥有的“低级”,基于套接字的解决方案完全不同。但是,我会试试WCF。

答案 1 :(得分:1)

您不能直接通过网络发送“对象”。您必须将它们转换为可解析的二进制或文本形式。对于后者,xml最适合。您可以使用BinaryFormatterXmlSerializer

如果你真的想发送.NET对象,因为你只提供.net客户端,tcp可能会达到低级别以满足你的需求。在这种情况下,请查看 .net remoting ,它允许您直接交换服务器和客户端之间的对象。

答案 2 :(得分:0)

只要双方的类定义相同,您就可以使用二进制序列化将任何对象序列化为流:

  BinaryFormatter bFormatter = new BinaryFormatter();
  bFormatter.Serialize(stream, objectToSerialize);
  stream.Close();

如上所述,最好使用WCF,因为如果组件在电线的任一侧进行版本化,这将会中断。