C#与VisionPro联合开发——TCP/IP通信

TCP/IP(传输控制协议/互联网协议)是一组用于在网络上进行通信的通信协议。它是互联网和许多局域网的基础,为计算机之间的数据传输提供了可靠性、有序性和错误检测。在软件开发中,TCP/IP 通信通常用于实现网络应用程序之间的数据交换。

基于 TCP/IP 的通信通常涉及以下几个步骤:
1、建立连接: 通信双方通过套接字(socket)建立连接。在 C# 中,你可以使用 TcpClient 类来创建一个 TCP 客户端,并使用 TcpListener 类来创建一个 TCP 服务器端。
2、发送和接收数据: 一旦连接建立,通信双方可以通过套接字发送和接收数据。在 C# 中,你可以使用 NetworkStream 类来发送和接收数据。
3、关闭连接: 在通信完成后,通信双方可以通过关闭套接字来断开连接,释放资源。

在这里插入图片描述
在这里插入图片描述

代码展示

using System;
using System.Net;
//引入支持socket的命名空间
using System.Net.Sockets;
using System.Text;
using System.Threading;
using System.Windows.Forms;namespace TCPIP通信 {public partial class Form1 : Form {public Form1() {InitializeComponent();}//声明socket需要支持的对象public Socket ServerSocket;//监听public Socket SocketAccept;//绑定客户端public Socket socket;//和客户端通信#region 开启监听Thread t1;//监听Thread t2;//接收//开启监听(监听的是客户端的链接)private void button1_Click(object sender, EventArgs e) {//实例化socket对象//参1:绑定一个ip地址,参2:数据流的格式,参3:协议ServerSocket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);//准备ip对象绑定ip地址IPAddress ip = IPAddress.Parse(textBox1.Text);//创建端口号int port = Convert.ToInt32(textBox2.Text);//把输入的ip和端口传入到连接中,尝试链接IPEndPoint iPEndPoint = new IPEndPoint(ip, port);try {//开启服务器的时候很容易报错,所有做异常处理ServerSocket.Bind(iPEndPoint);//开启监听(参数是监听的数量)ServerSocket.Listen(5);//禁用按钮,避免重复监听button1.Enabled = false;//监听是持续的,所以要在分线程中进行t1 = new Thread(Listen);//设置成后台线程t1.IsBackground = true;//分线程中开始对socket监听t1.Start(ServerSocket);} catch (Exception ex) {MessageBox.Show(ex.Message);}}private void Listen(object o) {SocketAccept = o as Socket;try {//因为要持续监听,所以用了while循环while (true) {//阻塞线程,直到有客户端进来的时候才会往下执行socket = SocketAccept.Accept();//表示有客户端进来了,需要显示到textBox上面AddMsg(DateTime.Now.ToString("yyyy-mmddHHMMSS") + ":" + socket.RemoteEndPoint + "链接成功");//换行操作AddMsg("\r\n");//开启第二个线程,用来检测客户端传递过来的消息t2 = new Thread(Receive);t2.IsBackground = true;t2.Start(socket);}} catch (Exception ex) {MessageBox.Show(ex.Message);}}//接收消息的方法private void Receive(object obj) {socket = obj as Socket;try {while (true) {//定义字节,接收数据byte[] buffer = new byte[1024 * 1024 * 2];int r = socket.Receive(buffer);if (r == 0) {break;}string msg = Encoding.Default.GetString(buffer);AddMsg("他说:" + msg);AddMsg("\r\n");}} catch (Exception ex) {MessageBox.Show(ex.Message);}}private void AddMsg(string msg) {//异步处理,否则没办法刷新uirichText.BeginInvoke(new Action<string>(str => {richText.Text += msg;}), msg);}#endregion//发送消息private void sendBtn_Click(object sender, EventArgs e) {//首先获取要发送的消息string str = sendText.Text;byte[] buffer = Encoding.Default.GetBytes(str);try {socket.Send(buffer);AddMsg("我说:" + str);AddMsg("\r\n");sendText.Clear();} catch (Exception ex) {MessageBox.Show(ex.Message);}}//关闭客户端private void button2_Click(object sender, EventArgs e) {if (socket != null) {//禁掉socket的接收和发送socket.Shutdown(SocketShutdown.Both);socket.Close();t2.Abort();}ServerSocket.Close();SocketAccept.Close();t1.Abort();//打开监听的按钮button1.Enabled = true;}}
}

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

如若内容造成侵权/违法违规/事实不符,请联系瞎胡闹网进行投诉反馈,一经查实,立即删除!

相关文章

改进Yolov5目标检测与单目测距 yolo速度测量-pyqt界面-yolo添加注意力机制

当设计一个结合了 YOLOv5 目标检测、单目测距与速度测量以及 PyQt 界面的毕业设计时&#xff0c;需要考虑以下几个方面的具体细节&#xff1a; 计算机视觉、图像处理、毕业辅导、作业帮助、代码获取&#xff0c;私聊会回复! YOLOv5 目标检测&#xff1a; 首先&#xff0c;选择…

汇编反外挂

在软件保护领域&#xff0c;尤其是游戏保护中&#xff0c;反外挂是一个重要的议题。外挂通常指的是一种第三方软件&#xff0c;它可以修改游戏数据、操作游戏内存或提供其他作弊功能&#xff0c;从而给玩家带来不公平的优势。为了打击外挂&#xff0c;游戏开发者会采取一系列措…

H5元素形变

H5元素形变 一、缩放 语法&#xff1a; ​ transform:scale(缩放倍率) //整体缩放 ​ transform:scale(水平缩放倍率&#xff0c;垂直缩放倍率) //单独设置水平和垂直方向的缩放 ​ transform: scaleX(缩放倍率) //沿X轴缩放 ​ transform: scaleY(缩放倍率) //沿Y轴缩放…

Unity类银河恶魔城学习记录7-8 P74 Pierce sword源代码

Alex教程每一P的教程原代码加上我自己的理解初步理解写的注释&#xff0c;可供学习Alex教程的人参考 此代码仅为较上一P有所改变的代码 【Unity教程】从0编程制作类银河恶魔城游戏_哔哩哔哩_bilibili Sword_Skill.cs using System; using System.Collections; using System.C…

杰理701N可视化SDK之LED的配置和代码浅析

杰理701N可视化SDK LED的配置 LED硬件配置LED状态配置LED状态情景配置LED在SDK中相关代码 杰理可视化工具中可以配置LED的硬件配置和LED状态配置, 在可视化工具中的LED配置选项中设置 LED硬件配置 硬件配置可设置LED名, 推LED使用的IO口以及LED的点亮方式 SDK发布的标准原理…

Ubuntu中添加和修改Apt Repository

使用Ubuntu Software Center或 apt/apt-get等命令行工具安装软件包时&#xff0c;软件包是从一个或多个 apt 软件库&#xff08;software repositories&#xff09;下载的。APT repository是一个网络服务器或本地目录&#xff0c;其中包含可被 APT 工具读取的 deb 软件包和元数…

Linux之项目部署与发布

目录 一、Nginx配置安装&#xff08;自启动&#xff09; 1.一键安装4个依赖 2. 下载并解压安装包 3. 安装Nginx 4. 启动 nginx 服务 5. 对外开放端口 6. 配置开机自启动 7.修改/etc/rc.d/rc.local的权限 二、后端部署tomcat负载均衡 1. 准备2个tomcat 2. 修改端口 3…

Linux笔记之LD_LIBRARY_PATH详解

Linux笔记之LD_LIBRARY_PATH详解 code review! 文章目录 Linux笔记之LD_LIBRARY_PATH详解1.常见使用命令来设置动态链接库路径2.LD_LIBRARY_PATH详解设置 LD_LIBRARY_PATH举例注意事项 3.替代方案使用标准路径编译时指定链接路径优先使用 rpath 还是 runpath&#xff1f;注意…

嵌入式软件分层设计的思想分析

“嵌入式开发&#xff0c;点灯一路发” 那今天我们就以控制LED闪烁为例&#xff0c;来聊聊嵌入式软件分层: ——————————— | | | P1.1 |-----I<|--------------<| | | | P2.1 |-------------/ ---------…

【JavaEE】_synchronized关键字——监视器锁monitor lock

目录 1. synchronized的特性 2. synchronized的使用 3. Java标准库中的线程安全类 1. synchronized的特性 &#xff08;1&#xff09;互斥&#xff1a; 前文已经介绍&#xff0c;某个线程执行到某个对象的synchronized中时&#xff0c;其他线程如果也执行到同一个对象&…

Git笔记——4

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 前言 一、操作标签 二、推送标签 三、多人协作一 完成准备工作 协作开发 将内容合并进master 四、多人协作二 协作开发 将内容合并进master 五、解决 git branch -a…

第十二章 Linux——日志管理

第十二章 Linux——日志管理 基本介绍系统常用日志日志管理服务日志轮替基本介绍日志轮替文件命名logrotate配置文件自定义加入日志轮转应用实例 日志轮替机制原理查看内存日志 基本介绍 日志文件是重要的系统信息文件&#xff0c;其中记录了许多重要的系统事件&#xff0c;包…

【操作系统】磁盘文件管理系统

实验六 磁盘文件管理的模拟实现 实验目的 文件系统是操作系统中用来存储和管理信息的机构&#xff0c;具有按名存取的功能&#xff0c;不仅能方便用户对信息的使用&#xff0c;也有效提高了信息的安全性。本实验模拟文件系统的目录结构&#xff0c;并在此基础上实现文件的各种…

[c++] 工厂模式 + cyberrt 组件加载器分析

使用对象的时候&#xff0c;可以直接 new 一个&#xff0c;为什么还需要工厂模式 &#xff1f; 工厂模式属于创建型设计模式&#xff0c;将对象的创建和使用进行解耦&#xff0c;对用户隐藏了创建逻辑。 个人感觉上边的表述并没有说清楚为什么需要使用工厂模式。因为使用 new 创…

12个的无时间限制的录屏软件详细比较

您可能尝试过许多录制程序&#xff0c;但大多数都会在30 分钟后停止录制萤幕。如果您需要录制较长的内容&#xff0c;特别是为公司会议或简报进行录制&#xff0c;您将必须找到最好的没有时间限制的录屏软件。这款录音软体可以让您长时间录音而没有任何麻烦。下面列出了12 款无…

亚马逊产品数据抓取

抓取数据 启动抓取 &#xff0c;亚马逊平台前台网站中可以查看、抓取、分析的一系列数据源&#xff0c;其数据种类繁多&#xff0c;本系统主要抓取产品列表&#xff08;包含主图、标题、价格、review分值、prime服务信息等&#xff09;、Listing详情信息&#xff08;包含5点描…

MyBatis---初阶

一、MyBatis作用 是一种更简单的操作和读取数据库的工具。 二、MyBatis准备工作 1、引入依赖 2、配置Mybatis(数据库连接信息) 3、定义接口 Mapper注解是MyBatis中用来标识接口为Mapper接口的注解。在MyBatis中&#xff0c;Mapper接口是用来定义SQL映射的接口&#xff0c;通…

超68万售出,sedo域名登顶最新一期交易排行榜

.com三字母域名售价超过68万人民币&#xff0c;币圈对应的四字母域名近期被曝光售价超过68万人民币。 近日&#xff0c;sedo平台交易信息显示&#xff0c;一个三字母域名被拍卖出10.5万美元&#xff0c;折合人民币超过68万人民币。 据查询&#xff0c;其注册时间为1995年&…

【FreeRTOS】任务创建

参考博客&#xff1a; ESP-IDF FreeRTOS 任务创建分析 - [Genius] - 博客园 (cnblogs.com) 1.什么是任务 1&#xff09;独立的无法返回的函数称为任务 2&#xff09;任务是无线循环 3&#xff09;无返回数据 2.任务的实现过程 1.定义任务栈 裸机程序&#xff1a;统一分配到一…

五种多目标优化算法(MOFA、NSWOA、MOJS、MOAHA、MOPSO)性能对比(提供MATLAB代码)

一、5种多目标优化算法简介 多目标优化算法是用于解决具有多个目标函数的优化问题的一类算法。其求解流程通常包括以下几个步骤&#xff1a; 1. 定义问题&#xff1a;首先需要明确问题的目标函数和约束条件。多目标优化问题通常涉及多个目标函数&#xff0c;这些目标函数可能…