我是C#网络编程的新手。我发现TCPListener类对于在计算机之间发送文本非常有用,但我想知道是否可以在机器之间直接发送对象(假设客户端和服务器都具有类定义),而不必先将它们转换为字符串然后制作带有该数据的对象。
谢谢,
PM
答案 0 :(得分:2)
您的问题的一个解决方案是使用WCF并使用TCP绑定将对象标记为Serializable
。但这与您已经拥有的“低级”,基于套接字的解决方案完全不同。但是,我会试试WCF。
答案 1 :(得分:1)
您不能直接通过网络发送“对象”。您必须将它们转换为可解析的二进制或文本形式。对于后者,xml最适合。您可以使用BinaryFormatter
或XmlSerializer
。
如果你真的想发送.NET对象,因为你只提供.net客户端,tcp可能会达到低级别以满足你的需求。在这种情况下,请查看 .net remoting ,它允许您直接交换服务器和客户端之间的对象。
答案 2 :(得分:0)
只要双方的类定义相同,您就可以使用二进制序列化将任何对象序列化为流:
BinaryFormatter bFormatter = new BinaryFormatter();
bFormatter.Serialize(stream, objectToSerialize);
stream.Close();
如上所述,最好使用WCF,因为如果组件在电线的任一侧进行版本化,这将会中断。