2010-10-12 71 views
0

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

感谢,对您的问题

PM

回答

2

一种解决方案是使用WCF和标记你的对象为Serializable,与TCP结合。但这与您已有的基于套接字的“低级”解决方案完全不同。但是,我会给WCF一个尝试。

1

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

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

+0

而不是.NET Remoting,看看WCF。 – 2010-10-12 16:08:08

+0

.net远程处理有问题吗? – codymanix 2010-10-12 16:14:46

0

只要类定义是两边一样的,你可以使用二进制序列化到任何对象序列化到流:

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

您使用WCF如上所述更好,不过,因为如果组件在导线的任一侧进行版本控制,这将会中断。