当前位置: 首页 > news >正文

c#利用Forms.Timer定时检测Tcp连接状态

目的:本地创建客户端连接服务器端,如果连接正常显示连接正常如果连接异常显示连接异常。

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.Net.Sockets;
using System.IO;namespace BarcodeScanner
{public partial class Form2 : Form{private TcpClient tcpClient = null;private object objectlock = new object();public Form2(){InitializeComponent();}private void Form2_Load(object sender, EventArgs e){// 创建一个定时器,每秒钟检测一次TCP连接状态Timer timer = new Timer();timer.Interval = 100;timer.Tick += Timer_Tick;timer.Start();}private async void Timer_Tick(object sender, EventArgs e){/*在你的代码中,你使用了tcpClient.Connected属性来检测TCP连接状态。但是需要注意的是,tcpClient.Connected属性只能检测到上一次Send或Receive操作的连接状态,并不能实时检测到连接是否断开。如果要实时检测TCP连接状态,可以尝试发送一个特定的心跳消息给服务器,并等待服务器的回复。如果在一定时间内没有收到服务器的回复,就可以认为连接已经断开。*/bool connected = await Task.Run(()=>IsConnectedAsync());toolStripStatusLabel1.Text = connected ? "tcp连接正常" : "tcp连接异常";toolStripStatusLabel1.BackColor = connected ? Color.Green : Color.Red;}private async Task<bool> IsConnectedAsync(){if (tcpClient == null || !tcpClient.Connected){lock (objectlock){if (tcpClient == null || !tcpClient.Connected){try{// 创建一个新的TcpClient实例,并连接到服务器tcpClient = new TcpClient("127.0.0.1", 60000);return true;}catch (Exception){return false;}}}}else{try{// 获取网络流NetworkStream stream = tcpClient.GetStream();// 将字符串转换为字节数组byte[] data = Encoding.UTF8.GetBytes(" ");// 发送数据await stream.WriteAsync(data, 0, data.Length);return true;}catch (Exception ex){return false;}}// 如果所有检测都失败,则返回falsereturn false;}}
}

 

http://www.lryc.cn/news/250669.html

相关文章:

  • 空间注意力:改变我们理解图像的方式
  • 【模型报错记录】‘PromptForGeneration‘ object has no attribute ‘can_generate‘
  • mysql学习记录
  • Hdoop学习笔记(HDP)-Part.11 安装Kerberos
  • 浅谈UML的概念和模型之UML九种图
  • 杨志丰:OceanBase助力企业应对数据库转型深水区挑战
  • 版本控制系统Git学习笔记-Git分支操作
  • 分布式系统中最基础的 CAP 理论及其应用
  • 计算机视觉(OpenCV+TensorFlow)
  • shell语法
  • JAXB的XmlAttribute注解
  • 【代码】基于改进差分进化算法的微电网调度研究matlab
  • 计算机基础知识63
  • springboot虚拟请求——测试
  • 计算机视觉各个方向概述
  • AIGC: 关于ChatGPT中API接口调用相关准备工作
  • 【Java Web学习笔记】 1 - HTML入门
  • 基于windows系统使用Python对于pc当前的所有窗口的相关操作接口
  • 30秒搞定一个属于你的问答机器人,快速抓取网站内容
  • JPA数据源Oracle异常记录
  • 抽奖送平板是骗局!!!
  • json.decoder.JSONDecodeError: Extra data: line 1 column 332 (char 331)
  • rust持续学习 COW
  • 【计算机网络】14、DHCP
  • 【FPGA】Verilog:计数器 | 异步计数器 | 同步计数器 | 2位二进制计数器的实现 | 4位十进制计数器的实现
  • IDEA常用快捷键
  • 【2024秋招】2023-10-17 金山云文档服务端二面
  • 一种excel多线程并发写sheet的方案
  • 深入了解接口测试:揭秘网络分层和数据处理!
  • Java并发编程