如何检查 TcpClient 是否已连接?

2024-01-03

当我的客户端应用程序关闭套接字甚至终止时,我的服务器仍然认为它还活着。我什至检查TcpClient.Connected http://msdn.microsoft.com/en-us/library/system.net.sockets.tcpclient.connected%28v=vs.90%29.aspx然后我看到了这个。我把重要的部分加粗了

如果客户端套接字已连接到远程资源,则为 true截至最近一次操作;否则为假。

我如何知道套接字是否关闭?目前我必须执行一项操作并获取异常以发现其是否打开或关闭


有很多事情可以破坏套接字上的通信,其中许多完全超出您的控制范围,最好保持简单。

目前您拥有一个完全可以接受的检测机制,非常简单且成本低廉。

您可以做一次心跳,每隔 X 个时间从客户端发送一条“我在这里”消息,然后让服务器运行并查看是否没有 X * 小提琴因子间隔的消息。但使用处理器时间和带宽。

另一种选择取决于您的客户端检测到它不再连接并请求新连接。如果请求中有唯一标识符,则可以运行它的现有连接,终止它(如果存在),然后启动然后正常继续。

我知道例外感觉不太对劲,但只有当你不断失去联系时,这才是真正的问题,如果是的话,你的努力会更好地集中在解决这个问题上。

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

如何检查 TcpClient 是否已连接? 的相关文章

  • 如何找到锁的所有者(监视器)?

    有没有办法发现哪个线程当前拥有锁 具体来说 我正在寻找一些代码来打印出阻止锁定的线程 我想尝试锁定给定的超时时间 然后报告哪个线程正在阻止锁定 不需要 只需编写代码 private int lockOwner private object
  • 获取 UWP 应用中当前登录用户的用户名/用户 ID

    我想要得到username或用户idUWP 应用中当前登录的用户的信息 下面是我正在使用但它返回的代码null var current users Where p gt p AuthenticationStatus UserAuthenti
  • 使对象在运行时可序列化[关闭]

    Closed 这个问题需要细节或清晰度 help closed questions 目前不接受答案 有没有办法在运行时使对象可序列化 我应该使用反射吗 注意 该对象是外部库的一部分 因此我没有它的源代码 tl 博士 不 虽然您可以使用Typ
  • 如何在 C# 中绘制蜡烛图 [关闭]

    Closed 此问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 如何在 C 中绘制蜡烛图 有人有任何界面漂亮的例子吗 我用过MSChart http code msdn
  • 为什么选项卡页正文不使用 .NET 选项卡控件进行更新?

    我在使用 C Visual Studio 2010 中的 NET TabControl 时遇到一个奇怪的问题 启动 Windows 窗体应用程序 添加一个选项卡控件和一个按钮 向两个选项卡页添加两个不同的标签 以便您可以区分它们 该按钮的作
  • 如何使 Window.Current 关闭后可见?

    我有一个可以打开新窗口的应用程序 如果原始窗口关闭 然后用户启动应用程序 例如从开始菜单 TryShowAsStandaloneAsync无法打开新窗口 为什么 所以我想 复活 原来的那个 但虽然我用Window Current Activ
  • System.Drawing.dll / NumericUpDown 的 .NET 访问冲突异常

    我遇到了一个非常愚蠢的问题 我已经尝试完全重新安装 NET 但它没有解决问题 我什至无法通过谷歌搜索找到其他有同样问题的人 就在我的计算机上 如果我将 NumericUpDown 控件添加到 NET 项目中的窗体并运行该应用程序 则在运行该
  • SOAP Web 服务的命名空间是否区分大小写?

    我尝试部署一个 Web 服务 并将其更改为一台机器 当我测试其中一个 Web 方法时 我收到一条错误消息 服务器无法识别 HTTP 标头 Soapaction 的值 我做了一些搜索问题 当命名空间存在差异时 似乎有时会发生该错误 我查看了我
  • 通过 WCF 提供类对象的数组或列表

    任何提供自定义类对象列表或数组的 WCF 客户端服务器示例都会对我有所帮助 但这是我到目前为止所得到的 这是我想提供的班级系统 namespace NEN Server FS Serializable public class XFS pr
  • 为什么单击 ToolStrip 按钮两次时会引发 NullReferenceException - openFileDialog.showDialog()?

    我创建了一个干净的 Windows 窗体应用程序解决方案 添加了ToolStrip到主窗体 并在其上放置一个按钮 我还添加了一个OpenFileDialog 所以这样Click event of the ToolStripButton看起来
  • CLR 程序集不会在 64 位 SQL Server 2005 中加载

    我们在安装 SQL Server 2005 32 位 时使用带有一些用户定义函数的程序集 我们使用如下脚本将其部署到生产环境 CREATE ASSEMBLY Ourfunctions AUTHORIZATION dbo FROM 0x4D5
  • 如何在 C# 中按进程获取打开文件句柄的列表?

    如何在 C 中通过进程 ID 获取打开文件句柄的列表 我也有兴趣挖掘并获取文件名 寻找与流程资源管理器所做的等效的编程 这很可能需要互操作 考虑到对此添加赏金 实现起来非常复杂 哎呀 这很难从托管代码中做到 有一个 大多数事情都可以在互操作
  • .NET 4.5 和 .NET 4.5.1 是否默认启用 TLS 1.1 和 TLS 1.2?

    在我们的 Windows 2012 Server R2 上 我们需要禁用 TLS 1 0 不过 我们正在运行 NET 4 5 Wcf 服务 我们发现 如果禁用 TLS 1 0 WCF 服务将不再运行 因为我们收到错误 现有连接被远程主机强制
  • 如何将 boost::asio 套接字转换为 C++/CLI .Net 套接字?

    我想要的是简单的 从 boost asio 套接字创建新的 C CLI Net 套接字的代码示例 如何创建这样的东西 这是我想做的伪代码 net socket a boost asio socket b a assign b nativeW
  • 更新后 LINQ to SQL 返回旧数据

    我有一个使用 LINQ to SQL 连接到数据库的应用程序 我在获取 LINQ to SQL 返回正确的新更新数据时遇到问题 发生的情况是 我更改了 UI 上的字段 LINQ to SQL 生成更新语句 并将新数据存储在数据库中 但是 此
  • .NET XmlWriter 中正确的名称空间管理

    我在工作中广泛使用 NET XML 技术 我非常喜欢的事情之一是 XSLT 引擎 更准确地说是它的可扩展性 然而 有一个小部件一直是令人烦恼的根源 没有什么重大的事情或者我们不能忍受的事情 但是它阻止了我们生成我们想要生成的漂亮的 XML
  • 通过 pythonnet 使用 Python 中的 C# 程序集

    我使用的是 Windows 7 64 位 我已经成功下载并安装了 pythonnet 所以 import clr clr AddReference System Windows Forms from System Windows Forms
  • 当 .NET 项目开源时,谁应该拥有用于签署 .NET 程序集的私钥? [关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 更具体地说 是一个类库程序集 我最初的想法 让一些指定的管理员进行所有程序集签名 但是 当错误修复和新版本被编写时 二进制文件最终将依赖于它们的
  • WPF TreeView 绑定[重复]

    这个问题在这里已经有答案了 我有一个带有父级和子级属性的课程 ADO NET 实体框架分层页面类 http img148 imageshack us img148 6802 edmxxe8 gif http img148 imageshac
  • Windows 窗体中的切换开关控件

    我正在设计一个拨动开关控制使用CheckBox 但目前我的控件只能画一个圆圈 如何绘制如下图所示的圆形形状 以及如何根据控件的值更改圆圈的位置以表示选中和未选中的状态 如下图所示 这是我的代码 public class MyCheckBox

随机推荐