我有一个 C# 应用程序,我使用自定义 FTP 库。现在我使用 Socket.Send 发送数据,但我想知道使用套接字启动 NetworkStream 并使用 NetworkStream.Write 是否会更好。
使用其中一种比另一种有什么优势吗?
的优点是NetworkStream
主要源于以下事实:它是一个Stream
。的缺点是Socket
是从抽象 I/O 源读取和写入的通用代码,例如Stream
无法处理Socket
.
主要用例NetworkStream
是你在其他地方有一些代码可以从Stream
,并且您希望可以将它与Socket
。你会知道如果处于这种情况然后NetworkStream
将是一个很大的帮助!
举例来说,您有一个通信库,并且支持从文件、命名管道和 TCP/IP 序列化消息。 I/O 类的理想选择是Stream
。然后你的序列化方法可以接受FileStream
, a PipeStream
, or a NetworkStream
。它甚至会接受MemoryStream
。这就是好处抽象因为我们之后created流,一个方法可以interact在不知道它是什么类型的情况下使用它。
从这个意义上说,一个NetworkStream
使用adapter设计模式。它适应Socket
API 到Stream
API 以便期待的客户Stream
可以使用它。
最后,问题是,如果NetworkStream
is a Stream
适配器用于Socket
,我们应该使用哪一个?好吧,如果你need a Stream
, then NetworkStream
是您唯一的选择。如果你不需要Stream
,然后您可以使用您最熟悉的 API。如果您已经在使用Socket
成功,没有迫切的理由切换到NetworkStream
.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)