Csharp/C#教程:NetworkStream.Write与Socket.Send分享


NetworkStream.Write与Socket.Send

我有一个ac#应用程序,我使用自定义FTP库。 现在我使用Socket.Send发送数据,但我想知道用套接字启动NetworkStream是否更好,而是使用NetworkStream.Write。

使用一个优于另一个是否有任何优势?

NetworkStream的优势主要来自于它是一个StreamSocket的缺点是从抽象I / O源(如Stream读取和写入的公共代码无法处理Socket

NetworkStream的主要用例是您在其他地方有一些从Stream读取或写入的代码,并且您希望可以将它与Socket一起使用。 您会知道是否处于这种情况,然后NetworkStream将是一个很大的帮助!

比如说你有一个通信库,你支持从文件,命名管道和TCP / IP序列化消息。 I / O类的理想选择是Stream 。 然后,您的序列化方法可以接受FileStreamPipeStreamNetworkStream 。 它甚至会接受一个MemoryStream 。 这是抽象的好处,因为在我们创建了流之后,一个方法可以与它进行交互 ,而不知道它是什么类型的流。

从这个意义上说, NetworkStream使用适配器设计模式。 它使Socket API适应Stream API,以便期望Stream客户端可以使用它。

最后,问题是,如果NetworkStreamSocketStream适配器,我们应该使用哪一个? 好吧,如果您需要 Stream ,那么NetworkStream是您唯一的选择。 如果您不需要Stream ,那么您可以使用最适合的API。 如果您已经成功使用Socket ,则没有迫切需要切换到NetworkStream

您可以将NetworkStream创建分开,并像使用抽象Stream一样使用它 – 这样您就可以更改传输或只是创建Stream存根进行测试。

作为方法本身的问题 – NetworkStream.Write里面有唯一的操作(除了状态检查) streamSocket.Send(buffer, offset, size, SocketFlags.None); – 所以它与在socket上调用它大致相同。

上述就是C#学习教程:NetworkStream.Write与Socket.Send分享的全部内容,如果对大家有所用处且需要了解更多关于C#学习教程,希望大家多多关注—计算机技术网(www.ctvol.com)!

本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。

ctvol管理联系方式QQ:251552304

本文章地址:https://www.ctvol.com/cdevelopment/942035.html

(0)
上一篇 2021年11月12日
下一篇 2021年11月12日

精彩推荐