C#客户端

控件

打开链接

Socket socket;
// 打开连接
private void button1_Click(object sender, EventArgs e)
{button1.Enabled = false;button2.Enabled = true;//1 创建socket客户端对象socket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);// 2 连接指定tcp服务器地址和端口号socket.Connect(new IPEndPoint(IPAddress.Parse("192.168.107.73"), 3000));// 3 开始接受连接 需要使用异步接受,一直处于接受状态StartReceive();
}
public void StartReceive()
{Task.Run(() =>{while (true){byte[] buffer = new byte[1024];// 自定义字节数组while (true){try{int length = socket.Receive(buffer);if (length == 0){// 如果客户端接受的数据长度为0,证明服务器断开了this.richTextBox1.Invoke((Action)(() =>{richTextBox1.AppendText("服务器已经断开");}));break;}else{ // 把接收到的数据转成字符串string value = Encoding.UTF8.GetString(buffer, 0, length);this.richTextBox1.Invoke((Action)(() =>{richTextBox1.AppendText("服务器发来消息:" + value + "\t\n");}));}}catch (Exception){// 证明客户关闭socket.Close();BeginInvoke(new Action(() =>{button1.Enabled = true;button2.Enabled = false;}));break;}}}});
}

断开连接

 // 断开连接private void button2_Click(object sender, EventArgs e){button1.Enabled = true;button2.Enabled = false;socket.Shutdown(SocketShutdown.Both);// 关闭双向通信socket.Close();// 把客户端关闭}

发送信息

 发送消息
private void button3_Click(object sender, EventArgs e)
{if (socket != null){byte[] bs = Encoding.UTF8.GetBytes("李克兢:"+this.textBox1.Text);socket.Send(bs);}
}

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

ChatGPT 提示词技巧一本速通

目录 一、基本术语 二、提示词设计的基本原则 三、书写技巧 2.1 赋予角色 2.2 使用分隔符 2.2 结构化输出 2.3 指定步骤 2.4 提供示例 2.5 指定长度 2.6 使用或引用参考文本 2.7 提示模型进行自我判断 2.8 思考问题的解决过程 ​编辑 2.10 询问是否有遗漏 2.11 …

Studio One 6中文官网下载-Studio One软件下载-音乐编曲软件下载安装

​众多使用者向我们证明了轨道预设保存并调用您喜欢的曲目设置的快照,将您的工作流程效率升级到最新水平!存储指定轨道或频道的每项设置,以便即时调用,即使对于多个选定的曲目/频道也同样支持,轨道预设可存储轨道延迟、…

多处理系统结构

目录 统一内存访问(UMA)多处理器系统结构 优点 缺点 应用场景 UMA 结构的架构示例 解决方案和改进 非统一内存访问(NUMA)多处理系统结构 概述 NUMA的优点 NUMA的缺点 NUMA系统的工作原理 NUMA优化策略 结论 现代计算…

如何将本地代码上传到git上面

精简步骤: git init git add . git commit -m "first init" git remote add origin 远程仓库地址 git push -u origin master 目录 1、初始化本地仓库 2、添加所有文件到本地仓库 3、提交更改到本地仓库 4、添加github仓库作为远程仓库 5、推送更改…

洛谷:P5704【深基2.例6】字母转换

1. 题目链接 https://www.luogu.com.cn/problem/P5704 【深基2.例6】字母转换 2. 题目描述 输入一个小写字母,输出它的大写 输入:一个小写字母 输出:小写字母的大写形式 3. 我的思考 ASCII码的使用 4. 我提交的题解 /* https://www.luogu…

国际期货投机交易的常见操作方法:

一、在开仓阶段,入市时机的选择: (1)通过基本分析法,判断市场处于牛市还是熊市 开仓阶段,入市时机的选择:当需求增加、供给减少,此时价格上升,买入期货合约&#xff1b…

# 消息中间件 RocketMQ 高级功能和源码分析(五)

消息中间件 RocketMQ 高级功能和源码分析(五) 一、 消息中间件 RocketMQ 源码分析:NameServer 路由元数据 1、消息中间件 RocketMQ 中,NameServer 路由管理 NameServer 的主要作用是为消息的生产者和消息消费者提供关于主题 To…

SQL_CALC_FOUND_ROWS 和 FOUND_ROWS()实现对复杂sql实现分页与总条数查询

需求 ReturnResult result new ReturnResult(); try {List<Map> forList (List<Map>) dao.findForList("Mapper.getList", map);int count (int) dao.findForObject("Mapper.getCount", map);result.setData(forList);result.setCode(0);r…

一个小的画布Canvas页面,记录点的轨迹

Hello大家好&#xff0c;好久没有更新了&#xff0c;最近在忙一些其他的事&#xff0c;今天说一下画布canvas&#xff0c;下面是我的代码&#xff0c;实现了一个点从画布的&#xff08;0,0&#xff09;到&#xff08;canvas.width&#xff0c;canvas.height&#xff09;的一个实…

60.指针数组和数组指针

一.指针数组 指针数组是一个数组&#xff0c;在指针数组中存放的是指针变量。 定义一个指针数组p int *p[5]; 内存模型如下&#xff1a; 指针数组的初始化 #include <stdio.h>int main(void) {int a1;int b2;int c3;int i;int *p[3] {&a,&b,&c};for(i0…

椭圆的标准方程与协方差矩阵的特征值和特征向量的关系

椭圆的标准方程与协方差矩阵的特征值和特征向量的关系 flyfish 单位圆 &#xff1a;单位圆表示在标准正交基下的分布。 椭圆 &#xff1a;通过协方差矩阵的特征向量和特征值变换得到的椭圆&#xff0c;表示数据在新的坐标系下的分布。 特征向量 &#xff1a;红色箭头表示特征…

一文学会linux vim操作

Linux Vim操作教程及常用命令 Vim操作教程Vim的模式Vim有三种主要模式&#xff1a;启动Vim文件操作插入文本或新建行移动光标 Vim常用命令查找命令复制、粘贴和撤销替换模式快捷键 Vim操作教程 Vim的模式 Vim有三种主要模式&#xff1a; 正常模式&#xff08;Normal Mode&am…

Android sensor列表和访问记录

命令: dumpsys sensorservice 1.dumpsys sensorservice查看最近申请记录 dumpsys sensorservice命令输出Previous Registrations. Previous Registrations: 23:07:43 0x00000008 pid16587 uid10397 packagecom.start.testdemo.ui.udfp.fql.XsqFQLActivity samplingPeriod66…

07.MyBatis映射器:一对一关联查询

大家好&#xff0c;我是王有志&#xff0c;一个分享硬核 Java 技术的金融摸鱼侠&#xff0c;欢迎大家加入 Java 人自己的交流群“共同富裕的 Java 人”。 《MyBatis 映射器&#xff1a;实现简单的 SQL 语句》中&#xff0c;我们在 MyBatis 映射器的查询语句中使用 resultType 元…

AMBA-CHI协议详解(四)

《AMBA 5 CHI Architecture Specification》 AMBA-CHI协议详解&#xff08;一&#xff09; AMBA-CHI协议详解&#xff08;二&#xff09; AMBA-CHI协议详解&#xff08;三&#xff09; AMBA-CHI协议详解&#xff08;四&#xff09; 文章目录 2.3.3 Atomic transactions2.3.4 S…

Netgen/NGSolve安装

1、安装 1.1、准备 Visual Studio 2022、Python 3、Cmake、Git 1.2、目录 在netgen下有三个文件夹分别是 src、build、install 1.3、安装编译 git clone --recurse-submodules https://github.com/NGSolve/ngsolve.git srccd src git submodule update --init --recursiv…

数据结构-二叉搜索树

二叉搜索树&#xff1a;BST(Binary Search Tree) 二叉搜索树是二叉树&#xff0c;可以为空&#xff0c;如果不为空&#xff0c;满足以下性质&#xff1a; 非空左子树的所有键值小于其根节点的键值非空右子树的所有键值大于其根节点的键值左、右字数本身也都是二叉搜索树 二叉…

使用SSL协议后为什么还要对数据加密后再传输?

使用SSL协议后服务器还是需要对数据 进行对应的加密的。根证书&#xff1a;SSL协议最重要的CA机构在电脑预装的根证书&#xff0c;这个根证书是用于检验网站的数字证书是否正常是否是经过官网备案的防止盗版网站情况。 网站的数字证书数据&#xff1a;网站的基本信息(CA信息、网…

java函数式编程优雅的写if else

前言 我们在写业务代码的时候或多或少会写比较多的if else 进行判断抛出异常、分支处理等操作。这些if...else...充斥在代码中严重影响了代码代码的美观,这时我们可以利用java8的新特性来优雅的写if...else...。 if if if 这种结构 原来的写法 String a= "aaa";i…

MySql进阶:深入理解MySQL语句执行逻辑

深入理解MySQL语句执行逻辑 一、前言 本文源自微博客(www.microblog.store),且以获得授权 一直是想知道一条SQL语句是怎么被执行的&#xff0c;它执行的顺序是怎样的&#xff0c;然后查看总结各方资料&#xff0c;就有了下面这一篇博文了。   本文将从MySQL总体架构—&…