TcpClient.Connected 返回 true 但客户端未连接,我可以使用什么代替?

2023-11-22

在 VB.net 中,我使用 TcpClient 来检索数据字符串。我不断检查 .Connected 属性以验证客户端是否已连接,但即使客户端断开连接,它仍然返回 true。我可以用什么来解决这个问题?

这是我当前代码的精简版本:

Dim client as TcpClient = Nothing
client = listener.AcceptTcpClient
do while client.connected = true
   dim stream as networkStream = client.GetStream()
   dim bytes(1024) as byte
   dim numCharRead as integer = stream.Read(bytes,0,bytes.length)
   dim strRead as string = System.Text.Encoding.ASCII.GetString(bytes,0,i)
loop

我认为如果客户端断开连接,至少 GetStream() 调用会抛出异常,但我已经关闭了另一个应用程序,但它仍然没有...

Thanks.

EDIT建议轮询 Client.Available 但这并不能解决问题。如果客户端未“实际”连接,则可用仅返回 0。

关键是我试图允许连接保持打开状态,并允许我通过同一套接字连接多次接收数据。


当 NetworkStream.Read 返回 0 时,表示连接已关闭。参考:

如果没有数据可供读取,则 NetworkStream.Read 方法将阻塞,直到有数据可用为止。为了避免阻塞,您可以使用 DataAvailable 属性来确定数据是否在传入网络缓冲区中排队等待读取。如果 DataAvailable 返回 true,则读取操作将立即完成。读取操作将读取尽可能多的可用数据,最多可达大小参数指定的字节数。如果远程主机关闭连接,并且已接收到所有可用数据,则 Read 方法将立即完成并返回零字节。

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

TcpClient.Connected 返回 true 但客户端未连接,我可以使用什么代替? 的相关文章

  • 以编程方式检查页面是否需要基于 web.config 设置进行身份验证

    我想知道是否有一种方法可以检查页面是否需要基于 web config 设置进行身份验证 基本上如果有这样的节点
  • 向 ExpandoObject 添加方法时,“关键字 'this' 在静态属性、静态方法或静态字段初始值设定项中无效”

    我尝试向 ExpandoObject 添加一个动态方法 该方法将返回属性 动态添加 给它 但它总是给我错误 我在这里做错了什么吗 using System using System Collections Generic using Sys
  • 为什么要序列化对象需要 Serialized 属性

    根据我的理解 SerializedAttribute 不提供编译时检查 因为它都是在运行时完成的 如果是这样 那么为什么需要将类标记为可序列化呢 难道序列化器不能尝试序列化一个对象然后失败吗 这不就是它现在所做的吗 当某些东西被标记时 它会
  • 构造函数中显式关键字的使用

    我试图了解 C 中显式关键字的用法 并查看了这个问题C 中的explicit关键字是什么意思 https stackoverflow com questions 121162 但是 那里列出的示例 实际上是前两个答案 对于用法并不是很清楚
  • JSON 数组到 C# 列表

    如何将这个简单的 JSON 字符串反序列化为 C 中的列表 on4ThnU7 n71YZYVKD CVfSpM2W 10kQotV 这样 List
  • 如何使用recv()检测客户端是否仍然连接(并且没有挂起)?

    我写了一个多客户端服务器程序C on SuSE Linux 企业服务器 12 3 x86 64 我为每个客户端使用一个线程来接收数据 我的问题是 我使用一个终端来运行服务器 并使用其他几个终端来运行服务器telnet到我的服务器 作为客户端
  • POCO HTTPSClientSession 发送请求时遇到问题 - 证书验证失败

    我正在尝试使用 POCO 库编写一个向服务器发出 HTTPS 请求的程序 出于测试目的 我正在连接到具有自签名证书的服务器 并且我希望允许客户端进行连接 为了允许这种情况发生 我尝试安装InvalidCertificateHandler这是
  • C++ 异步线程同时运行

    我是 C 11 中线程的新手 我有两个线程 我想让它们同时启动 我可以想到两种方法 如下 然而 似乎它们都没有按照我的预期工作 他们在启动另一个线程之前启动一个线程 任何提示将不胜感激 另一个问题是我正在研究线程队列 所以我会有两个消费者和
  • 暂停下载线程

    我正在用 C 编写一个非常简单的批量下载程序 该程序读取要下载的 URL 的 txt 文件 我已经设置了一个全局线程和委托来更新 GUI 按下 开始 按钮即可创建并启动该线程 我想要做的是有一个 暂停 按钮 使我能够暂停下载 直到点击 恢复
  • 访问者和模板化虚拟方法

    在一个典型的实现中Visitor模式 该类必须考虑基类的所有变体 后代 在许多情况下 访问者中的相同方法内容应用于不同的方法 在这种情况下 模板化的虚拟方法是理想的选择 但目前这是不允许的 那么 模板化方法可以用来解析父类的虚方法吗 鉴于
  • 如何从 C# 控制器重定向到外部 url

    我使用 C 控制器作为网络服务 在其中我想将用户重定向到外部网址 我该怎么做 Tried System Web HttpContext Current Response Redirect 但没有成功 使用控制器的重定向 http msdn
  • ASP MVC:服务应该返回 IQueryable 的吗?

    你怎么认为 你的 DAO 应该返回一个 IQueryable 以便在你的控制器中使用它吗 不 您的控制器根本不应该处理任何复杂的逻辑 保持苗条身材 模型 而不是 DAO 应该将控制器返回给视图所需的所有内容 我认为在控制器类中看到查询 甚至
  • 无法将类型“System.IO.Stream”隐式转换为“Java.IO.InputStream”

    我提到了一些类似的问题 但没有一个涉及IO 当我使用时 我在java中使用了相同的代码Eclipse 那次就成功了 但现在我尝试在中使用这段代码Mono for Android C 它不起作用 我正在尝试运行此代码来创建一个InputStr
  • 如何在c#中的内部类中访问外部类的变量[重复]

    这个问题在这里已经有答案了 我有两个类 我需要声明两个类共有的变量 如果是嵌套类 我需要访问内部类中的外部类变量 请给我一个更好的方法来在 C 中做到这一点 示例代码 Class A int a Class B Need to access
  • 将构建日期放入“关于”框中

    我有一个带有 关于 框的 C WinForms 应用程序 我使用以下方法将版本号放入 关于 框中 FileVersionInfo GetVersionInfo Assembly GetExecutingAssembly Location F
  • 如何挤出平面 2D 网格并赋予其深度

    我有一组共面 连接的三角形 即二维网格 现在我需要将其在 z 轴上挤出几个单位 网格由一组顶点定义 渲染器通过与三角形数组匹配来理解这些顶点 网格示例 顶点 0 0 0 10 0 0 10 10 0 0 10 0 所以这里我们有一个二维正方
  • 当前的 x86 架构是否支持非临时加载(来自“正常”内存)?

    我知道有关此主题的多个问题 但是 我没有看到任何明确的答案或任何基准测量 因此 我创建了一个处理两个整数数组的简单程序 第一个数组a非常大 64 MB 第二个数组b很小 无法放入 L1 缓存 程序迭代a并将其元素添加到相应的元素中b在模块化
  • 双精度类型二维多维数组的 pinvoke 编组作为 c# 和 c++ 之间的输入和输出

    我有以下我正在尝试解决的双物质类型的 2d 多维数组的 c 和 c pinvoke 编组 我已经查看了以下热门内容以获得我目前拥有的内容使用双精度数组进行 P Invoke 在 C 和 C 之间编组数据 https stackoverflo
  • Googletest:如何异步运行测试?

    考虑到一个包含数千个测试的大型项目 其中一些测试需要几分钟才能完成 如果按顺序执行 整套测试需要一个多小时才能完成 通过并行执行测试可以减少测试时间 据我所知 没有办法直接从 googletest mock 做到这一点 就像 async选项
  • 使用 Crypto++ 获取 ECDSA 签名

    我必须使用 Crypto 在变量中获取 ECDSA 签名 我在启动 SignMessage 后尝试获取它 但签名为空 我怎样才能得到它 你看过 Crypto wiki 吗 上面有很多东西椭圆曲线数字签名算法 http www cryptop

随机推荐

  • 第二个 form.submit() 在 XP 上的 Safari 中不起作用,在其他浏览器上起作用

    我有一些代码 当您单击我的页面上的某些内容时 使用 form submit 打开另一个窗口 它在 IE 6 8 Firefox 和 Chrome 以及 Mac 上的 Safari 中运行良好 但在 Windows XP 上的 Safari
  • jquery 插件太多?

    我正在开发一个网站 但我意识到 除了主 javascript 文件的链接和 jquery 文件的链接之外 它开始看起来像是还有三个或更多插件的链接 我只是想知道这是否是好的做法 我正在构建的网站是一个网络应用程序 因此我需要很多功能 但我不
  • python 多久刷新一次文件?

    Python 多久刷新一次文件 Python 多久刷新一次到标准输出 我不确定 1 至于 2 我相信Python在每一个新行之后都会刷新到stdout 但是 如果您将标准输出重载到文件中 它会经常刷新吗 对于文件操作 Python 使用操作
  • 排序算法是否应该在比较函数中传递相同的元素

    libcxx 的 std sort c 标准的 llvm 版本 库 调用具有相同元素的比较谓词 即 比较函子的两个参数都引用相同的位置 要排序的序列 一个简化的例子来说明这一点 cat a cc include
  • 迁移到 mysql 5.7 后查询非常慢

    我有一个 MySQL 数据库 其中包含 InnoDB 表 总计超过 10 GB 的数据 我想将其从 MySQL 5 5 迁移到 MySQL 5 7 我有一个查询 看起来有点像 SELECT dates date count mySub2 m
  • 如何检测android中是否存在麦克风?

    我的应用程序中有一个语音识别部分来捕获用户的语音输入 这就是我所做的 Intent voiceIntent new Intent RecognizerIntent ACTION RECOGNIZE SPEECH startActivityF
  • 查找存储依赖项的 Maven 存储库

    我正在开发一个包含多个公司远程 Maven 存储库的项目 每个存储库托管数十个依赖项 整个项目使用数百个依赖项 我需要一种方法快速确定依赖项存储在哪个远程存储库上 Maven 是否提供了一种简单的方法来执行此操作 还是我需要自己搜索每个存储
  • 单击栏或按钮外部时隐藏菜单侧边栏

    我正在尝试制作一个像语义 UI 一样的菜单 但我只实现了单击菜单按钮并打开菜单 反之亦然 我使用切换类来显示侧边栏 但我不知道这种方式是否完全正确 div class menu button div menu button click fu
  • 表单中 type="submit" 的纸张按钮未提交?

    我正在尝试使用paper button with type属性设置为submit 就像人们所做的那样button元素 提交封闭的form 但由于某种原因无法提交表格 这是错误还是功能 怎么做paper button提交表格 PS 我在 da
  • 浏览器关闭后删除身份验证/会话 cookie

    浏览器关闭后 cookie 继续存在需要哪些具体步骤 目前我有 createPersistentCookie set to true on LoggedIn event 指定机器密钥 表单滑动过期设置为true 只要浏览器打开 用户就会保持
  • 是否可以从 gc 角度将 java 对象标记为不可收集以节省 gc 扫描时间?

    是否可以从 gc 角度将 java 对象标记为不可收集以节省 gc 扫描时间 类似的东西http wwwasd web cern ch wwwasd lhc Objectivity V5 2 Java guide jgdStorage fm
  • 我能通过字符来区分枚举的最接近的是什么?

    我已经多次写过这个问题 最后意识到我最大的问题是我不知道如何表示这些数据 这使得很难推理其余的代码 数据在Python中的表示方式 class LSP C MASK MAP A Ch A B Ch B C Ch C D Ch D T Tmp
  • 如何吞掉所有异常并保护我的应用程序免于崩溃?

    我发现几个 C 应用程序因错误条件而崩溃 例如obj null or obj member null 很多时候 obj来自3rdPartyApp的接口 并导致 3rdPartyApp 和 MyCsApp 一起崩溃 如何在所有可能的区域添加异
  • 如何设置 chrome 的复选框颜色

    在我的应用程序中 我显示了带有图例的图表 图例有彩色复选框 下面是一个可以正常工作的复选框的代码IE但颜色没有出现在Chrome and Firefox
  • 带有 Web GUI 的免费 G​​IT 服务器,如 BitBucket/GitHub [已关闭]

    Closed 此问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 目前不接受答案 在工作中我使用 BitBucket 我想要在家里将类似的东西部署在我的 Linux 服务器上 所以我正在寻找 Only 1 或 2 个用户需要 An
  • 将 Paypal 付款拆分为两个帐户

    我目前正在创建一个系统 允许管理员创建事件并允许个人注册这些事件 每次注册都会产生相关费用 注册者可以使用 PayPal 支付费用 创建活动后 管理员输入将存入资金的 PayPal 帐户 然后 我对每次注册收取固定价格作为服务费用 当付款提
  • 单一方法的管理员权限

    我目前正在开发一个应用程序启动器 自动更新程序 因此 为了将应用程序安装 更新到 Program Files 我需要请求管理员权限 好吧 由于更新程序只需要在找到新版本时编写一些内容 所以我尝试只 如果发现新版本 则请求权限 每次在应用程序
  • 连续添加 char 以获得字典中最长的单词[关闭]

    很难说出这里问的是什么 这个问题模棱两可 含糊不清 不完整 过于宽泛或言辞激烈 无法以目前的形式合理回答 如需帮助澄清此问题以便重新打开 访问帮助中心 给定一个单词词典和一个初始字符 通过向单词中连续添加一个字符来找到字典中最长的单词 在任
  • 错误:“{”标记之前应有类名

    我知道 stackoverflow 和其他网站上有几个类似的问题 循环包括 但我仍然无法弄清楚 也没有出现任何解决方案 所以我想发布我的具体内容 我有一个事件类 它有 2 个甚至更多的子类 即到达和着陆 编译器 g 抱怨 g c Wall
  • TcpClient.Connected 返回 true 但客户端未连接,我可以使用什么代替?

    在 VB net 中 我使用 TcpClient 来检索数据字符串 我不断检查 Connected 属性以验证客户端是否已连接 但即使客户端断开连接 它仍然返回 true 我可以用什么来解决这个问题 这是我当前代码的精简版本 Dim cli