【问题标题】:C# passing objects TCPListenerC# 传递对象 TCPListener
【发布时间】:2010-10-12 15:56:43
【问题描述】:

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

谢谢,

下午

【问题讨论】:

    标签: c# networking tcplistener


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

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

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

      【讨论】:

      • 查看 WCF,而不是 .NET Remoting。
      • .net 远程处理有问题吗?
      【解决方案3】:

      只要两边的类定义相同,就可以使用二进制序列化将任意对象序列化为流:

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

      不过,您最好使用上面提到的 WCF,因为如果在线路的任一侧对程序集进行版本控制,这将中断。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2016-09-03
        • 2013-04-28
        • 1970-01-01
        • 1970-01-01
        • 2018-11-09
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多