NetworkStream.Write与Socket.Send

Bri*_*ker 18 c# sockets networkstream

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

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

Ric*_*key 27

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

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

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

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

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