如何使用 TcpListener 和 TcpClient 创建双工连接?

2023-12-04

我遇到一种情况,我需要并行发送和接收信息。
我的协议可以定义读取端口和写入端口。

我目前有以下代码:

public void Listen()
{
    ThreadPool.SetMinThreads(50, 50);
    listener.Start();

    while (true)
    {
        var context = new ListeningContext(listener.AcceptTcpClient(), WritePort);
    }
}

如何从我传递的 TcpClient 创建另一个侦听器?


A TcpClient对象包裹了一个NetworkStream目的。您使用GetStream()的方法TcpClient访问NetworkStream对象,然后用于从网络读取数据或向网络写入数据。 MSDN 文章为NetworkStream说如下:

读和写操作可以 同时执行在 NetworkStream 类的实例 无需同步。 只要有一个独特的线程 对于写操作和一个 读取操作的唯一线程, 不会有交叉干扰 读线程和写线程之间没有 需要同步。

Use the TcpListener对象监听传入的连接。使用TcpClient从调用返回的对象AcceptTcpClient()沟通(读andwrite)与远程端点。

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

如何使用 TcpListener 和 TcpClient 创建双工连接? 的相关文章

  • 嵌入式系统中的malloc [重复]

    这个问题在这里已经有答案了 我正在使用嵌入式系统 该应用程序在 AT91SAMxxxx 和 cortex m3 lpc17xxx 上运行 我正在研究动态内存分配 因为它会极大地改变应用程序的外观 并给我更多的力量 我认为我唯一真正的路线是为
  • FFMPEG Seeking 带来音频伪影

    我正在使用 ffmpeg 实现音频解码器 在读取音频甚至搜索已经可以工作时 我无法找到一种在搜索后清除缓冲区的方法 因此当应用程序在搜索后立即开始读取音频时 我没有任何工件 avcodec flush buffers似乎对内部缓冲区没有任何
  • 使用 Microsoft Graph API 订阅 Outlook 推送通知时出现 400 错误请求错误

    我正在尝试使用 Microsoft Graph API 创建订阅以通过推送通知获取 Outlook 电子邮件 mentions 我在用本文档 https learn microsoft com en us graph api subscri
  • 如何在我的应用程序中使用 Windows Key

    Like Windows Key E Opens a new Explorer Window And Windows Key R Displays the Run command 如何在应用程序的 KeyDown 事件中使用 Windows
  • C# 中可空类型是什么?

    当我们必须使用nullable输入 C net 任何人都可以举例说明 可空类型 何时使用可空类型 https web archive org web http broadcast oreilly com 2010 11 understand
  • 当 Cortex-M3 出现硬故障时如何保留堆栈跟踪?

    使用以下设置 基于 Cortex M3 的 C gcc arm 交叉工具链 https launchpad net gcc arm embedded 使用 C 和 C FreeRtos 7 5 3 日食月神 Segger Jlink 与 J
  • 基于范围的 for 循环中的未命名循环变量?

    有没有什么方法可以不在基于范围的 for 循环中 使用 循环变量 同时也避免编译器发出有关未使用它的警告 对于上下文 我正在尝试执行以下操作 我启用了 将警告视为错误 并且我不想进行像通过在某处毫无意义地提及变量来强制 使用 变量这样的黑客
  • 线程、进程和 Application.Exit()

    我的应用程序由主消息循环 GUI 和线程 Task Factory 组成 在线程中我调用一些第三方应用程序var p new Process 但是当我调用Application Exit 在消息循环中 我可以看到在线程中启动的进程仍在内存中
  • 是否有比 lex/flex 更好(更现代)的工具来生成 C++ 分词器?

    我最近将源文件解析添加到现有工具中 该工具从复杂的命令行参数生成输出文件 命令行参数变得如此复杂 以至于我们开始允许它们作为一个文件提供 该文件被解析为一个非常大的命令行 但语法仍然很尴尬 因此我添加了使用更合理的语法解析源文件的功能 我使
  • 像“1$”这样的位置参数如何与 printf() 一起使用?

    By man I find printf d width num and printf 2 1 d width num 是等价的 但在我看来 第二种风格应该与以下相同 printf d num width 然而通过测试似乎man是对的 为什
  • AccessViolationException 未处理

    我正在尝试使用史蒂夫 桑德森的博客文章 http blog stevensanderson com 2010 01 28 editing a variable length list aspnet mvc 2 style 为了在我的 ASP
  • 在 URL 中发送之前对特殊字符进行百分比编码

    我需要传递特殊字符 如 等 Facebook Twitter 和此类社交网站的 URL 为此 我将这些字符替换为 URL 转义码 return valToEncode Replace 21 Replace 23 Replace 24 Rep
  • 如何在内存中存储分子?

    我想将分子存储在内存中 这些可以是简单的分子 Methane CH4 C H bond length 108 7 pm H H angle 109 degrees But also more complex molecules like p
  • 在 ASP.NET 中将事件冒泡为父级

    我已经说过 ASP NET 中的层次结构 page user control 1 user control 2 control 3 我想要做的是 当控件 3 它可以是任何类型的控件 我一般都想这样做 让用户用它做一些触发回发的事情时 它会向
  • 如何在 C# 中播放在线资源中的 .mp3 文件?

    我的问题与此非常相似question https stackoverflow com questions 7556672 mp3 play from stream on c sharp 我有音乐网址 网址如http site com aud
  • 将变量分配给另一个变量,并将一个变量的更改反映到另一个变量中

    是否可以将一个变量分配给另一个变量 并且当您更改第二个变量时 更改会瀑布式下降到第一个变量 像这样 int a 0 int b a b 1 现在 b 和 a 都 1 我问这个问题的原因是因为我有 4 个要跟踪的对象 并且我使用名为 curr
  • 更改显示的 DPI 缩放大小使 Qt 应用程序的字体大小渲染得更大

    我使用 Qt 创建了一些 GUI 应用程序 我的 GUI 应用程序包含按钮和单选按钮等控件 当我运行应用程序时 按钮内的按钮和字体看起来正常 当我将显示器的 DPI 缩放大小从 100 更改为 150 或 200 时 无论分辨率如何 控件的
  • 将 viewbag 从操作控制器传递到部分视图

    我有一个带有部分视图的 mvc 视图 控制器中有一个 ActionResult 方法 它将返回 PartialView 因此 我需要将 ViewBag 数据从 ActionResult 方法传递到 Partial View 这是我的控制器
  • 为什么 strtok 会导致分段错误?

    为什么下面的代码给出了Seg 最后一行有问题吗 char m ReadName printf nRead String s n m Writes OK char token token strtok m 如前所述 读取字符串打印没有问题 但
  • 不同类型的指针可以互相分配吗?

    考虑到 T1 p1 T2 p2 我们可以将 p1 分配给 p2 或反之亦然吗 如果是这样 是否可以不使用强制转换来完成 或者我们必须使用强制转换 首先 让我们考虑不进行强制转换的分配 C 2018 6 5 16 1 1 列出了简单赋值的约束

随机推荐

  • 使用提交按钮时,ajax 调用不起作用

    我正在尝试使用以下 API 获取实时货币汇率 http www exchangerate api com INR USD 1 k FQRxs xT2tk NExQj 当我点击按钮时 它会提醒费率并且工作正常 我正在使用以下 Ajax 代码
  • 仅将 AngularJS 用于路由目的

    我刚刚被分配了一个完全用 jQuery 制作的网站 它异步加载几个页面 并且想成为一个SPA 现在唯一的问题是开发人员没有考虑一般的 URL 人们无法通过 www example com 以外的任何其他方式访问该网站 我对 AngularJ
  • std::move(const shared_ptr 引用) 是什么意思?

    以下是我正在尝试的玩具代码 我理解第一个和第二个 第一个将所有权授予 p 第二份副本p to p 但我不明白第三个 什么是std move of const shared ptr 意思是 谢谢 class P class A public
  • GADT 的解析和使用

    我在编写解析器时遇到了问题 具体来说 我想要不同类型的返回值 例如 我有两种不同的数据类型FA and PA代表两种不同的脂质类别 data FA ClassLevelFA IntegerMass FA CarbonChain derivi
  • Haskell 并不懒惰地评估交错

    我正在解决一个问题 它来自 UPenn 课程 但我没有接受它 只是通过它来学习 Haskell 重点是构造一个 Stream 如下定义 由 ruler 定义 标尺 n 能除以 n 的 2 的最高次幂的指数 问题是 我认为下面标尺的定义应该延
  • 节点 5.5.0 已安装,但节点 -v 在 OS X 和自制软件上获取“v4.2.1”?

    我正在尝试将我的nodejs v4 2 1更新到最新版本并成功获得 但node v仍然给我 v4 2 1 可能较旧的节点先于较新的节点出现在您的 PATH 中 您可以在 shell 中运行 which node 查看默认运行的 Node 二
  • 如何制作仅包含 jinja 模板的 python 包

    目前有一个项目 我正在尝试扩展 jinja2 模板 这些模板存在于我正在尝试制作的 python 包中 现在我正在努力制作一个 python 包 html文件 这是我目前拥有的 sharedtemplates setup py templa
  • 使用 ProcessPoolExecutor 时更新变量

    if name main MATCH ID str doc ref2 id MATCH ID TEAM doc ref3 id with concurrent futures ProcessPoolExecutor max workers
  • 缩小时聚类地图标记,放大时不聚类

    我正在使用Google Map Android 集群实用程序具有 Google 地图 v2 播放服务 我没有得到我预期的行为 正如您在下面的两张图片中看到的那样 当放大时 我可以看到 20 个簇和左侧的单个标记 但是当我缩小直到它们彼此重叠
  • r c将一个数据帧的单个列与另一个数据帧绑定,而不更改列名

    假设我有两个数据框 df1 data frame x 1 4 y 2 5 df2 data frame x2 1 4 y2 2 5 如果我 cbind df1 和 df2 一切正常 gt cbind df2 df1 x2 y2 x y 1
  • RewriteRule后如何在地址栏中保留原始URL

    这是我的 htaccess 文件 Options FollowSymLinks
  • 向 SNS 发送后续 CloudWatch 警报通知

    当我使用 CloudWatch 警报触发 AutoScaling 操作时 它会重复触发 ASG 操作 换句话说 具有状态 ALARM 的后续 N 个警报集将触发 ASG 上的 N 个操作 SNS 操作未观察到此行为 而是仅在警报从 正常 更
  • 在 pandas 数据帧上设置多重索引的最佳方法

    我有一个数据框df与这些列 Group Year Gender Feature 1 Feature 2 Feature 3 后面我想用MultiIndex来堆叠数据 我尝试了这样的方式 df index pd MultiIndex from
  • react-native-firebase 通知中的深层链接

    我使用带有消息传递功能的react native firebase通过云功能向我的应用程序发送通知 使用admin messaging send message 与这里非常相似 https medium com the modern dev
  • findIndex() JavaScript 数组对象

    var array one 1 two 2 one 3 two 4 var result array findIndex function value if value 2 return false return true console
  • jQuery 原地弹跳

    我需要我的列表项元素弹跳到位 而不是相互掉落 我创建了一个 JSFiddle 来表达我的意思 http jsfiddle net RGvjj 有人可以告诉我为什么这些元素会这样做以及我需要做什么来解决这个问题吗 尝试删除inline显示从
  • WPF ErrorTemplate 在未聚焦时可见?

    我正在使用 WPF 验证进行 TextBox 验证 我定义了这个模板
  • GZipStream:压缩文件比原始文件大

    我正在尝试在 C 中使用 gzip 流 但压缩后的文件似乎比以前大 当我使用 avi 和 mkv 文件时会发生这种情况 但是如果我使用比原始文件小的 txt 和 html 压缩文件 using MemoryStream output new
  • 如何使用 cURL 将文件内容作为正文实体发送

    我正在使用 cURL 命令行实用程序将 HTTP POST 发送到 Web 服务 我想将文件的内容作为 POST 的正文实体包含在内 我尝试过使用 d to filename gt 以及带有类型信息的其他变体 例如 data to file
  • 如何使用 TcpListener 和 TcpClient 创建双工连接?

    我遇到一种情况 我需要并行发送和接收信息 我的协议可以定义读取端口和写入端口 我目前有以下代码 public void Listen ThreadPool SetMinThreads 50 50 listener Start while t