NetworkStream 和 Socket 类有什么区别?

2024-02-16

我有一个项目,我可能想抽象客户端和服务器之间的通信。我最初使用的是套接字和 TCP。然后我认为能够切换到进程间通信通道可能会很好。然后我查看了 System.IO.PipedStream 类,发现 PipeStream 和 Socket 类之间有很多重叠。但是当我查看 Socket 类时,它继承自 Object。因此Socket和PipeStreams之间没有公共接口或抽象类。

然后我想起了一些有关 NetworkStream 的事情。它显然包装了一个 Socket 类。但至少 NetworkStream 和 PipeStream 都继承自 Stream。这意味着我可以更换我的实现。我想,我还没有尝试过这个。我一直在使用套接字。

所以我的问题是:使用 NetworkStream 类比 Socket 类有什么缺点吗?有什么陷阱或需要注意的地方吗?


如果您被迫使用低级选项(例如套接字和管道),并且您想要从这些数据源提取流数据的抽象,那么Stream http://msdn.microsoft.com/en-us/library/system.io.stream.aspx类是完美的,因为它为该模型提供了抽象。

如果您针对 Stream 实例进行编码,那么您可以让任何东西实现 Stream,而不必担心底层传输。

关于使用 NetworkStream 与 Socket,NetworkStream 只是包装 Socket 实例并将对拉取模型(流)的调用应用到 Socket。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

NetworkStream 和 Socket 类有什么区别? 的相关文章

  • 我可以修改 [appname].exe.config 而无需手动读取/写入 XMl 吗?

    我使用 NET 3 5 和 Visual Studio 2008 Express 在 C 应用程序中创建了一些设置 我有许多应用程序范围的设置 我希望能够从应用程序内修改它们 我可以通过以下方式访问它们Properties Settings
  • 获取同名方法的集合

    我有一些代码 用于帮助 url 路由 尝试在控制器中查找操作方法 我的控制器看起来像这样 public ActionResult Item int id MyViewModel model new MyViewModel id return
  • 使用返回哈希数组的外部 PHP SOAP Web 服务的 C# .NET 客户端存在问题

    我正在编写一个需要调用外部 Web 服务的 NET Web 应用程序 我提供的文档包括 PHP 代码示例 我可以使用提供给我的 WSDL 地址在 VS2010 中成功创建 Web 引用 并且使用 fiddler 我可以看到正在发送和接收预期
  • 在 .NET C# 项目中使用 PHP

    有谁知道是否可以 以及是否有任何复杂性 在 NET C 项目中使用 PHP 语言 我知道 VB 和 C 现在可以混合在解决方案中 所以我想知道 由于 IIS 现在能够运行 PHP 您是否可以将它们组合成一个单一的运行时 显然 提出这个问题的
  • 如何使用 NUnit(或者可能使用其他框架)测试异步方法?

    我有一个 ASP NET Web API 应用程序 带有一个具有异步方法的 ApiController 返回Task lt gt 对象并标有async关键词 public class MyApiController ApiControlle
  • C# 从整数反序列化枚举

    是否可以从 C 中的 int 反序列化枚举 例如如果我有以下课程 class Employee public string Name get set public int EmployeeTypeID get set 我可以轻松地从 XML
  • 如何在 ZeroMQ 套接字中检索和存储随机 UUID?

    我需要在多个客户端之间进行通信 当我尝试运行文件 多个终端 时 我得到相同的身份 所以我让路由器套接字自动设置UUID 但我发现我无法使用该身份存储在服务器上以在多个客户端之间进行路由 我如何处理多个客户端 ID 我正在尝试构建一个异步聊天
  • 从资源文件获取 DisplayName [重复]

    这个问题在这里已经有答案了 我在 App GlobalResources 文件夹中有特定于文化的资源文件 现在我需要从此资源文件中读取 DisplayName 属性的值 我在用 Display Name MerchantName Resou
  • 文件按文件名模式存在

    我在用 File Exists filepath 我想做的是将其替换为模式 因为文件名的第一部分发生了变化 例如 该文件可以是 01 peach xml 02 peach xml 03 peach xml 如何根据某种搜索模式检查文件是否存
  • ORM 之于 RDBMS 就像 xxx 之于 OLAP 多维数据集一样? xxx存在吗?

    是否有用于查询 OLAP 多维数据集 数据仓库的 ORM 类似物 我对 NET 世界特别感兴趣 但一般对任何事物都感兴趣 我启动了一个开源项目 Kona 来包装 ADOMD Net 库 并尝试将 ADOMD Net 引入 21 世纪 你可以
  • SignalR .Net Core 3.1 Web 应用程序无法在本地 IIS 上运行

    尝试使用 ASP Net Core 3 1 和 Angular 基于在线示例创建聊天 以下内容在 IIS Express 上运行良好 但在本地 IIS 上运行不佳 错误信息 WebSocketTransport js 85 WebSocke
  • IRC 机器人:错误 - 注册超时

    我正在用 C 语言制作一个简单的 IRC 机器人 我终于让机器人连接并接收信息 我的代码也应该发送 但服务器表现得好像没有发送任何内容 当机器人连接时 我收到以下信息 收到 roc esper net 通知授权 查找您的主机名 收到 roc
  • 枚举和匹配属性的 C# 命名约定

    我经常发现自己实现了一个类 将某种自己的状态属性维护为枚举 我有一个 Status 枚举和一个 Status 类型的 Status 属性 我应该如何解决这个名称冲突 public class Car public enum Status O
  • 如何让MCR启动时间快

    我将 matlab 程序转换为 net 程序集 即 dll 文件 我制作了一个控制台 C 应用程序 添加了 dll 文件并从 php 调用它 每次调用 exe 时都会调用 MCR 如何使 MCR 在服务器启动时初始化 并且即使在一段时间后调
  • 尝试使用 angularJS 和 c# webapi 从服务器下载文件

    将文件上传到服务器时效果很好 没有损坏的文件 但是 当我下载文件时 除了纯txt 它们起作用 它们的规模不断扩大并变得腐败 经过大量调查后 我不知道可能出了什么问题 我只是写文件 作为响应流并下载 blob 欢迎任何想法 严重依赖此线程来解
  • .NET 世界有 Maven 替代方案或端口吗?

    NET 世界有 Maven 替代方案或端口吗 我很想使用 Java 世界拥有的良好依赖管理系统 但我没有找到任何可与 NET 项目相媲美的系统 NMaven http incubator apache org nmaven 是第一个 官方努
  • Json.Net:使用 SelectToken 在不知道元素名称的情况下获取值?

    我有一个简单的 JSON 文件 我需要获取令牌的值 我尝试使用 SelectToken 但问题是元素的名称是动态的 这是我的 JSON 文件 name testdata items myItemName located true 我需要获取
  • 自动修补程序(高效自动更新程序)

    我想要一个自动更新程序 可以检测修改的文件 通过比较客户端和服务器上的文件 并仅下载修改的文件 我还希望它能够给我生动的状态 在进程栏或其他东西上显示它 该场景是网络中有大约一千个客户端 它们使用相同的应用程序 如果应用程序有新版本可用 他
  • .NET Windows 服务中调用 C# 的 wait 的 I/O 回调是否可以不阻塞?

    我知道在 ASP NET 中 当使用 wait 时工作线程会返回到池中 而 I O 发生在后台 这对于可扩展性非常有用 我的 Windows 服务是一个套接字服务器 它使用 Begin End 样式的异步套接字 I O 混合我的魔法 我知道
  • 可选参数“必须是编译时常量”

    我有一个类分为两个部分文件 如下所示 public partial class PersonRepository BaseRepository

随机推荐

  • 如何区分SQLAlchemy IntegrityError的原因?

    SQLAlchemy 似乎只是抛出一个一般IntegrityError当事务存在数据完整性问题时 当然 确切的查询和错误消息包含在异常中 这足以供人调试程序 然而 在为异常编写错误处理代码时 据我所知 似乎没有一个好的方法来检查哪个表上的哪
  • 为什么 ComboBox 是下拉结果整个应用程序性能非常慢?

    我有一个wpf应用程序 有一个奇怪的事情 只要我按下鼠标 ComboBox下拉箭头就会变得所有UI响应都很慢 无论ComboBox是否有项目 烦人的情况只出现在某些计算机上 期待答复 我查看了您可以在互联网上找到的提示 我发现没有任何问题
  • 如何修复“未找到自定义操作文件的安装项目”异常?

    我正在尝试为 Windows 服务创建一个安装项目 我已按照以下指示进行操作http support microsoft com kb 816169 http support microsoft com kb 816169轻松创建安装项目
  • 向ggplot添加水平线

    我想使用 ggplot2 在一个图中绘制多条不同颜色的线 然后添加一条单独的水平线 我的代码如下 在我运行最后一行之前它运行良好p geom hline yintercept 400 所有线条都变成黑色 右侧的图例消失 有谁知道如何解决这个
  • 通过使用显式构造函数将相同的参数传递给每个元素来构造元组

    以下内容在 Visual C 2015 Update 2 上运行良好 请注意A是不可复制的并且A A is explicit include
  • 有没有办法“持久”地将 git 存储库与 SVN 同步?

    从我在网上找到的信息来看 似乎使用git svn不是 坚持 意思是 如果我git svn clone一个存储库 然后推送到 master 并在单独的文件夹中重新拉取一个新副本 该新副本根本不知道 svn 并且无法在不重新应用的情况下用于与
  • 在 Ansible 中创建已安装软件包的报告

    我正在尝试制作一份包含几台机器上已安装的软件包及其版本的报告 该报告必须在执行 playbook 的计算机上创建 这是我当前的剧本 name main hosts all gather facts no become true tasks
  • Excel 中按轮廓级别(组)着色

    我想根据 Excel 中的大纲级别更改单元格的颜色 大纲级别是指列分组的级别 我正在尝试使用 ActiveCell OutlineLevel 属性在 ColorByValue 过滤器中使用 这可能吗 或者 有没有办法通过 VBA 或函数来做
  • Flex:包裹的物品与其他物品的宽度相同

    我使用 Flex 创建一个多列列表 该列表根据容器的宽度调整列数 我发现的问题是 如果我想通过将 flex grow 设置为 1 来使用父级的完整宽度 则最后一个换行行中的项目会未对齐 因为它们试图填充父级 我发现了两种对我不起作用的解决方
  • 如果屏幕尺寸小于指定值,则将水平块转换为垂直块

    在下面的代码中 我希望水平三列块放置并堆叠在彼此之上 以防容器的大小小于 X 像素 对于较小或移动设备 我应该如何以及在表的哪个元素上应用此属性 请注意 代码是一个内容块 因此我不想将 CSS 应用于整个电子邮件模板或电子邮件除非这是解决这
  • HKLM\Software 下的 OpenSubKey 返回 null

    这是我的代码 Microsoft Win32 RegistryKey key Microsoft Win32 Registry LocalMachine OpenSubKey SOFTWARE ADM 该注册表项存在于计算机上 键始终为空
  • ASP.NET Core上的静态文件

    我正在尝试启用静态文件ASP NET Core 2 0Web应用程序 我在一个名为 updater 的文件夹中有一堆文件 该文件夹位于wwwroot文件夹 为了允许访问它们 我添加了 app UseStaticFiles new Stati
  • 使用 numpy 将二进制掩码应用于 RGB 图像时出现问题

    我正在尝试使用 numpy 将二进制掩码应用于 RGB 图像 我找到了这个https stackoverflow com a 26843467 4628384 https stackoverflow com a 26843467 46283
  • Android NDK:从 C++ 调用 Java 函数

    我对 JNI 非常陌生 在将 C iOS 代码移植到 JNI 之前 我试图弄清楚某些事情是如何工作的 我成功地让 NDK 示例之一在 Android studio 中运行 我可以看到 Java 如何调用 C 函数 我一直在四处寻找并获取大量
  • 从 SQL 导出数据并写入文本文件(不能使用 CP 或 SP)

    因此 我正在寻找一种简单的方法来从 SQL Server 2000 数据库导出数据并将其写入逗号分隔的文本文件 它只有一张表 只有大约 1 000 行 我是 C 新手 所以如果这是一个愚蠢的问题 请原谅我 这是一项非常简单的任务 但您需要了
  • 如何在使用 XSL-FO 生成的 PDF 中插入换行符

    我正在使用 XSL FO 和 XML 生成 PDF 在文本框中 用户可以输入 1 等数据 然后按 ENTER 然后按 2 ENTER 3 等 但在 XML 和 PDF 中 输出是 1234567 如何保留换行符 我已经尝试过了white s
  • Vue props 数据未在子组件中更新

    大家好 我只是想要一些关于 vue props 数据的解释 所以我将值从父组件传递到子组件 问题是 当父数据发生数据更改 更新时 它不会在子组件中更新 Vue component child component template div c
  • Blazor JsInterop:调用 JS 时 Div 不可用

    该问题涉及客户端 Blazor 组件 该组件包含一个被组件变量隐藏的 div bool 打开 我需要组件在组件代码文件中显示 div 之后运行一些 Javascript 以便调整它在屏幕上的位置 下面的代码应该更好地解释这一点 组件 raz
  • 为什么要使用弹簧? [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • NetworkStream 和 Socket 类有什么区别?

    我有一个项目 我可能想抽象客户端和服务器之间的通信 我最初使用的是套接字和 TCP 然后我认为能够切换到进程间通信通道可能会很好 然后我查看了 System IO PipedStream 类 发现 PipeStream 和 Socket 类