gpt4 book ai didi

c# - NetworkStream.Write 与 Socket.Send

转载 作者:IT王子 更新时间:2023-10-29 04:48:27 29 4
gpt4 key购买 nike

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

使用一个比另一个有什么优势吗?

最佳答案

NetworkStream的优势主要是因为它是一个 Stream . Socket 的缺点是从抽象 I/O 源读取和写入的通用代码,如 Stream无法处理 Socket .

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

例如,假设您有一个通信库,并且支持序列化来自文件、命名管道和 TCP/IP 的消息。 I/O 类的理想选择是 Stream .然后你的序列化方法可以接受 FileStream , 一个 PipeStream , 或 NetworkStream .它甚至会接受 MemoryStream .这就是抽象的好处,因为在我们创建流之后,方法可以在不知道流是什么类型的情况下与其交互 .

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

最后,问题是,如果NetworkStreamStream Socket 的适配器,我们应该使用哪一个?那么,如果您需要 Stream , 然后 NetworkStream是您唯一的选择。如果您不需要 Stream ,那么您可以使用您最熟悉的 API。如果您已经在使用 Socket成功,没有紧迫的理由切换到NetworkStream .

关于c# - NetworkStream.Write 与 Socket.Send,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6555011/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com