我是C#中网络编程的新手。我发现TCPListener类对于在计算机之间发送文本非常有用,但我想知道是否可以直接发送对象(假设客户端和服务器都有类定义),而不必先将它们转换为字符串,然后再创建具有该数据的对象。C#传递对象TCPListener
感谢,对您的问题
PM
我是C#中网络编程的新手。我发现TCPListener类对于在计算机之间发送文本非常有用,但我想知道是否可以直接发送对象(假设客户端和服务器都有类定义),而不必先将它们转换为字符串,然后再创建具有该数据的对象。C#传递对象TCPListener
感谢,对您的问题
PM
一种解决方案是使用WCF和标记你的对象为Serializable
,与TCP结合。但这与您已有的基于套接字的“低级”解决方案完全不同。但是,我会给WCF一个尝试。
您不能通过网络直接发送“对象”。你必须将它们转换成可解析的二进制或文本形式。对于后者,xml经常最适合。您可以使用BinaryFormatter
或XmlSerializer
。
如果你真的想发送.NET对象,因为你只提供.net客户端,tcp可能会根据你的需要设置为低级别。在这种情况下,看看.net remoting它允许您直接交换服务器和客户端之间的对象。
只要类定义是两边一样的,你可以使用二进制序列化到任何对象序列化到流:
BinaryFormatter bFormatter = new BinaryFormatter();
bFormatter.Serialize(stream, objectToSerialize);
stream.Close();
您使用WCF如上所述更好,不过,因为如果组件在导线的任一侧进行版本控制,这将会中断。
而不是.NET Remoting,看看WCF。 – 2010-10-12 16:08:08
.net远程处理有问题吗? – codymanix 2010-10-12 16:14:46