C#心跳机制客户端

窗体(richTextBox右显示聊天)

步骤

点击链接按钮
         tcpclient客户端步骤
         1创建客户端对象
         2连接服务器connect
         3创建网络基础流发消息 .write发消息
         4 创建网络基础流接消息 .read接消息
         5 断开连接close()

窗体代码

namespace _02_心跳机制客户端
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }
        TcpClient client;
        private void button1_Click(object sender, EventArgs e)
        {
            if (button1.Text == "连接")
            {
                try
                {
                    client = new TcpClient();
                    client.Connect(comboBox1.Text, int.Parse(comboBox2.Text));
                    button1.Text = "断开";
                    StartRead();
                    HeartBeat();
                }
                catch (Exception ex)
                {
                    MessageBox.Show("连接失败");
                }
            }
            else
            {
                client.Close();
                timer.Stop();
                button1.Text = "连接";
            }
        }
        void StartRead()
        {
            byte[] bs = new byte[1024];
            Task.Run(() =>
            {
                try
                {
                    while (true)
                    {
                        int count = client.GetStream().Read(bs,0,bs.Length);
                        string msg = Encoding.UTF8.GetString(bs, 0, count);
                        richTextBox1.Invoke((Action)(() =>
                        {
                            richTextBox1.AppendText(msg + "\t\n");
                        }));
                    }
                }
                catch (Exception ex)
                {

                    button1.Text = "连接";
                }
            });
        }
        Timer timer;
        void HeartBeat()
        {
            timer = new Timer();
            timer.Interval = 10000;
            timer.Tick += Timer_Tick;
            timer.Start();
        }
        private void Timer_Tick(object sender, EventArgs e)
        {
            client.GetStream().Write(new byte[] { 1 }, 0, 1);
        }
        private void button2_Click(object sender, EventArgs e)
        {
            byte[] bs = Encoding.UTF8.GetBytes(textBox1.Text);
            byte[] bs1 = new byte[bs.Length + 1];
            bs1[0] = 0;
            bs.CopyTo(bs1,1);
            client.GetStream().Write(bs1, 0, bs1.Length) ;
        }
    }
}

早岁已知世事艰

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/720922.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Spring注解----------@Deprecated

情景: 在我们开发过程中,有时候会遇到我们需要将几个类中的方法集中到一个类中,但是我们又不希望把我们的原来的类删掉(就是单纯的不想删除,都是我写的代码我不想杀死我的结晶,不能说我写的是shi&#xff…

【C语言】--- 常见调试信息预处理器宏

在编程的艺术世界里,代码和灵感需要寻找到最佳的交融点,才能打造出令人为之惊叹的作品。而在这座秋知叶i博客的殿堂里,我们将共同追寻这种完美结合,为未来的世界留下属于我们的独特印记。 【C语言】--- 常见调试信息预处理器宏 开…

Multisim仿真之万用表、安捷伦万用表、信号发生器操作方法

1、XMM是安捷伦示波器 如下图所示,实物安捷伦的外围3个插孔对应于 XMM图标示波器的右侧3个引脚,上下一一对应 2、函数信号发生器XFG 如下图所示,COM就是GND,正负的意思就是相对于GND而言,有正负电压; 3、…

vivado PIP or SITE_PIP、PKGPIN_BYTEGROUP

PIP是Xilinx部件上用于路由连接或网络的设备对象。PIP 称为ARC的连接多路复用器可以编程为将一根电线连接到 另一个,从而将节点连接在一起,以形成中特定NET所需的路由 设计。 SITE_PIP,也称为路由BEL,是SITE内部的连接多路复用器&…

JavaFX按钮

当用户单击按钮时,JavaFX Button类可以触发事件。Button类扩展了Labeled类,可以显示文本,图像或两者都可以。 以下代码显示了如何向Button添加单击操作侦听器。 import javafx.application.Application; import javafx.event.ActionEvent; im…

【信息学奥赛】CSP-J/S初赛03 计算机网络与编程语言分类

第1节 计算机网络基础 1.1 网络的定义 所谓计算机网络,就是利用通信线路和设备,把分布在不同地理位置上的多台计算机连 接起来。计算机网络是现代通信技术与计算机技术相结合的产物。 网络中计算机与计算机之间的通信依靠协议进行。协议是计算机收、发…

Postman文件数据导入导出

前言 不同的接口测试工具如Postman、Apipost、Apifox创建的接口文档都是互通的,都可以互相兼容使用。我们就不需要在3个不同测试工具都去创建,只要在一个工具上创建,想要在其他接口测试工具上使用就运用导入和导出功能即可。 Postman、Apip…

2024.6.18 作业 xyt

今日作业: 1. 完善对话框,点击登录对话框,如果账号和密码匹配,则弹出信息对话框,给出提示”登录成功“,提供一个Ok按钮,用户点击Ok后,关闭登录界面,跳转到其他界面 如果…

【shell脚本速成】for 嵌套和和 if 高级用法

文章目录 一、for嵌套二、for与数组三、if高级用法3.1、条件符号使用双圆括号,可以在条件中植入数学表达式 if (())3.2、使用双方括号,可以在条件中使用通配符 四、简写if五、与文件存在与否的判断六、课后练习 🌈你好呀!我是 山顶风景独好 &…

智能网站管理系统

智能网站管理系统,即智能化的网站管理工具,是为了提高网站管理效率和简化操作流程而开发的一种软件系统。它集合了各种先进的技术和功能,为网站管理员提供了一套强大而可靠的解决方案。 智能网站管理系统的核心功能是网站内容管理。传统的网站…

MySQL 基本语法讲解及示例(上)

第一节:MySQL的基本操作 1. 创建数据库 在 MySQL 中,创建数据库的步骤如下: 命令行操作 打开 MySQL 命令行客户端或连接到 MySQL 服务器。 输入以下命令创建一个数据库: CREATE DATABASE database_name;例如,创建一…

(资料收藏)王阳明传《知行合一》共74讲,王阳明知行合一音频讲解资料

今天给大家带来的不是软件,而是一份精神食粮——《知行合一》的教程福利。这可不是一般的教程,它关乎心灵,关乎智慧,关乎我们如何在纷繁复杂的世界中找到自己的位置。 咱们得聊聊王阳明,这位明代的大儒,他…

看完这篇文章你才能了解什么是大模型

引言 近年来,人工智能(AI)技术迅速崛起,成为全球科技领域的热门话题。大模型(Large Language Model)技术以其庞大的参数和复杂的结构,为AI提供了强大的计算和学习能力,推动着AI技术…

【proteus仿真】基于51单片机的秒表设计

【proteus仿真】基于51单片机的秒表设计 资料获取在文章结尾处! 更多资料获取链接: https://docs.qq.com/sheet/DTExIc2dPUUJ5enZZ?tabBB08J2 1.资料内容 源码proteus仿真图 演示视频: 【proteus仿真】基于51单片机的秒表设计_哔哩哔…

​【数据结构与算法】冒泡排序:简单易懂的排序算法解析

💓 博客主页:倔强的石头的CSDN主页 📝Gitee主页:倔强的石头的gitee主页 ⏩ 文章专栏:《数据结构与算法》 期待您的关注 ​ 目录 一、引言 二、冒泡排序原理 🍃基本思想: 🍃算法…

为什么传统 CNN 可能无法进行基于纹理的分类?

作者:Mayank Gubba、Mohammed Faisal、Trapti Kalra、Vijay Pandey 将纹理分析与深度学习结合使用对于在机器视觉任务中取得更好的结果起着重要作用。在第一篇博客中,我们讨论了“纹理”的基础知识、不同类型的纹理以及纹理分析在解决实际计算机视觉任务…

Windows系统下制作Windows 11系统U盘启动及安装指导

Windows系统下制作Windows 11系统U盘启动及安装指导 一、准备工作 U盘不得小于8G(推荐使用usb3.0接口);下载好对应的系统镜像;下载RUFUS或者软通碟U盘制作启动软件; 二、Windows操作系统下制作U盘启动(这里以使用RUFUS软件为例&…

Java对象头的组成

介绍对象头之前先说一下Java对象内部的组成结构&#xff1a; 1&#xff0c;成员变量&#xff08;Data1...DataN&#xff09; 2, 对象头 Java对象头的组成&#xff08;根据对象头分析对象状态借此优化代码&#xff09; <dependency> <groupId>org.openjdk.jol&l…

MB-iSTFT-VITS 模型论文思路与实验分享:基于VITS架构优化的轻量级文本转语音模型

参考文献&#xff1a; [1] Kawamura M, Shirahata Y, Yamamoto R, et al. Lightweight and high-fidelity end-to-end text-to-speech with multi-band generation and inverse short-time fourier transform[C]//ICASSP 2023-2023 IEEE International Conference on Acoustics…

【C#上位机应用开发实战】—机器视觉检测

#机器视觉 在现代工业生产中&#xff0c;机器视觉检测技术扮演着越来越重要的角色。它通过计算机视觉技术来实现对工件的自动化检测和判断&#xff0c;大大提高了生产效率和产品质量。而在机器视觉检测的应用中&#xff0c;C#作为一种简洁易用且功能强大的编程语言&#xff0c…