项目代码第8讲:Socket和OPC UA客户端通信;数据库的表格内容谁填的?(OPC Client和Web);在Program.cs中单独开启一个线程

news2025/1/10 10:42:32

一、Socket:用于和OPC UA客户端通信

1、Socket和OPC UA的定义

1>Socket:只是一个API,提供了一个使用 TCP(以及其他协议)的方式,用于在同一台计算机上的进程之间或不同计算机之间的进程通信

  • 一个API

        Socket 是一种应用程序编程接口(API),它提供了一系列函数、类或方法,允许开发者编写代码来执行特定的任务。在这个上下文中,任务是实现进程间的通信。

        Socket 不仅限于跨网络的远程通信,也可以用于同一台计算机上运行的不同进程之间的本地通信。

  • 提供了一个使用 TCP(以及其他协议)的方式

        通过 Socket API,开发者可以利用多种网络传输协议(如TCP、UDP等)进行数据交换。TCP(传输控制协议)是一个面向连接的、可靠的协议,确保数据包按顺序到达并且没有丢失;而其他协议(例如UDP)则提供了不同的特性组合。

2>OPC UA:机器对机器(M2M)通信和物联网(IoT)应用

        OPC UA (Open Platform Communications Unified Architecture) 是一种工业通信协议,用于安全可靠地交换数据。它被广泛应用于制造业和过程控制行业中,以实现机器对机器(M2M)通信和物联网(IoT)应用。OPC UA 提供了一个服务导向架构,允许客户端通过网络与服务器进行交互,获取实时数据、历史数据以及配置信息等。

        OPC UA 使用 TCP 作为其底层传输机制。OPC UA 的消息格式被封装在 TCP 数据包中进行发送和接收。这种方式提供了可靠的数据传输,并且适用于大多数工业自动化场景。

2、具体理解Socket

socket到底是什么?_哔哩哔哩_bilibili

1>为什么说Socket只是一个API?

如下图,在此项目中,服务端就是上图的Web,客户端就是上图的OPC Client。

使用IP+端口来定位:

1》对于 TCP、UDP网络协议

        可以把socket想象成打电话,电话号码就是IP地址,打电话找谁就是端口号,协议就像是你说的是方言还是普通话。

        TCP就像是你每说一句话,对方都要说一声:"清楚明白"!

        UDP就是,什么都不管,只管说就行了,也不管对方是否明白!

2》把上述所有协议公用的逻辑部分抽象成一个数据结构。socket是最基础的结构,维护任何协议都有可能会用到的。

INet_Sock是网络传输功能的Sock,在Socket的基础上还加入了TTL、IP地址、端口这些网络传输相关的字段信息。

3》【Socket只是一个API的原因】Socket变成了一个特殊的文件,用户可以在用户空间使用句柄fd来操作内核Sock的网络传输能力。【类似前后端分离架构】

Socket起源于Unix,而Unix/Linux基木哲学之一就是“一切皆文件”,都可以用“打开/Open”→“读写/write/read”→“关闭/close”的模式来操作。

创建sock同时也创建一个文件,文件有个句柄FD(即文件系统里的身份证号码,通过它可以唯一确定是哪个sock)。

将FD句柄暴露给用户之后,用户操作这个句柄文件,系统就会将操作指向内核sock结构。

所以这部分就可以抽象理解为一个简单的API接口。让用户更方便的实现特定的网络编程功能。

2>Socket怎么实现网络通信功能?——以最常用的TCP协议为例,分为两阶段:建立连接、数据传输

通过sock结构主动发起3次握手,至此连接就算准备好了。

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

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

相关文章

离线录制激光雷达数据进行建图

目前有一个2D激光雷达,自己控制小车运行一段时间,离线获取到激光雷达数据后运行如下代码进行离线建图。 roslaunch cartographer_ros demo_revo_lds.launch bag_filename:/home/firefly/AutoCar/data/rplidar_s2/2025-01-08-02-08-33.bag实际效果如下 d…

hisi mipi yuv422数据异常问题记录解决

问题解决,海思原厂提供支持后解决方式,适用于dv500和928系列: YUV422输入时,mask[1]使用0x00FFC000得配置。 问题现象就是mask[1]配置的0xFF0000时,YUV值收到后UV的会向下做一个4对齐的操作,导致色度UV数据…

《跟我学Spring Boot开发》系列文章索引❤(2025.01.09更新)

章节文章名备注第1节Spring Boot(1)基于Eclipse搭建Spring Boot开发环境环境搭建第2节Spring Boot(2)解决Maven下载依赖缓慢的问题给火车头提提速第3节Spring Boot(3)教你手工搭建Spring Boot项目纯手工玩法…

VS2022 安装和配置 vcpkg

vs2022使用vcpkg最全版本_vs2022 vcpkg-CSDN博客 Visual Studio 2022 安装和配置 vcpkg_vs2022 vcpkg-CSDN博客 GitHub - microsoft/vcpkg: C Library Manager for Windows, Linux, and MacOS vcpkg 文档 | Microsoft Learn 没有详细教程写出来,先大概看看&#x…

深度学习与计算机视觉 (博士)

文章目录 零、计算机视觉概述一、深度学习相关概念1.学习率η2.batchsize和epoch3.端到端(End-to-End)、序列到序列(Seq-to-Seq)4.消融实验5.学习方式6.监督学习的方式(1)有监督学习(2)强监督学习(3)弱监督学习(4)半监督学习(5)自监督学习(6)无监督学习(7)总结:不同…

5G学习笔记之PNI-NPN

目录 1. 概述 2. CAG 2.1 CAG ID 2.2 CAG信息配置 3. 网络选择/网络重选,小区选择/小区重选 4. 接入和拥塞控制 1. 概述 PNI-NPN,Public Network Integrated NPN,公共网络集成的非公共网络,依赖于PLMN网络,使用 CAG&am…

学习threejs,导入babylon格式的模型

👨‍⚕️ 主页: gis分享者 👨‍⚕️ 感谢各位大佬 点赞👍 收藏⭐ 留言📝 加关注✅! 👨‍⚕️ 收录于专栏:threejs gis工程师 文章目录 一、🍀前言1.1 ☘️THREE.BabylonLoader babyl…

计算机网络——网络层—IP数据报与分片

一、IP 数据报的格式 • 一个 IP 数据报由首部和数据两部分组成。 • 首部的前一部分是固定长度,共 20 字节,是所有 IP 数据报必须具有的。 • 在首部的固定部分的后面是一些可选字段,其长度是可变的。 IP 数据报首部的固定部分中的各字段 版…

2025新年源码免费送

2025很开门很开门的源码免费传递。不需要馒头就能获取4套大开门源码。 听泉偷宝,又进来偷我源码啦👊👊👊。欢迎偷源码 🔥🔥🔥 获取免费源码以及更多源码,可以私信联系我 我们常常…

React快速上手到项目实战总篇

React核心价值与前置知识 时刻保持对知识的渴望 家人们 开学!!! 核心价值 组件化(易开发易维护) 数据驱动视图 :定义好数据和ui的显示规则 即UIf(state) 只关注业务数据修改,不在操作DOM 增加开发效率 使用vite创建Recat项目 …

采用标准化的方式开展设计-研发中运用设计模式

概述 实现规范化、标准化的引导式设计,以业务需求为输入,识别业务特点,并通过引导式设计,找到最适合的设计模式、具体方案,汇总成为应用的设计,拉齐各应用的设计一的致性。 采用标准化的方式开展设计…

Web无障碍

文章目录 🟢Web Accessibility-Web无障碍🟢一、Web Accessibility-Web1. web无障碍设计2. demo3.使用相关相关开源无障碍工具条(调用可能会根据网络有点慢) 如有其他更好方案,可以私信我哦✒️总结 🟢Web Accessibility-Web无障碍…

计算机网络 (26)互联网的路由选择协议

一、路由选择协议的基本概念 路由选择协议是计算机网络中用于确定数据包在网络中传输路径的一种协议。它帮助路由器构建和维护路由表,以便根据目的地址将数据包转发到正确的下一跳路由器。路由选择协议分为静态路由选择协议和动态路由选择协议两大类。 二、静态路由…

江科大STM32入门——UART通信笔记总结

wx:嵌入式工程师成长日记 1、简介 简单双向串口通信有两根通信线(发送端TX和接收端RX)TX与RX要交叉连接当只需单向的数据传输时,可以只接一根通信线当电平标准不一致时,需要加电平转换芯片 传输模式:全双工;时钟&…

分布式主键ID生成方式-snowflake雪花算法

这里写自定义目录标题 一、业务场景二、技术选型1、UUID方案2、Leaf方案-美团(基于数据库自增id)3、Snowflake雪花算法方案 总结 一、业务场景 大量的业务数据需要保存到数据库中,原来的单库单表的方式扛不住大数据量、高并发,需…

创建基本的 Electron 应用项目的详细步骤

创建一个基本的 Electron 应用项目的详细步骤。我们将从安装 Node.js 开始,然后创建项目文件夹并初始化 Electron 项目。 1. 安装 Node.js 首先,确保你已经安装了 Node.js 和 npm。你可以在终端中运行以下命令来检查是否已经安装: node -v…

对话新晋 Apache SeaTunnel Committer:张圣航的开源之路与技术洞察

近日,张圣航被推选为 Apache SeaTunnel 的 Committer成员。带着对技术的热情和社区的责任,他将如何跟随 Apache SeaTunnel 社区迈向新的高度?让我们一起来聆听他的故事。 自我介绍 请您简单介绍一下自己,包括职业背景、当前的工作…

超完整Docker学习记录,Docker常用命令详解

前言 关于国内拉取不到docker镜像的问题,可以利用Github Action将需要的镜像转存到阿里云私有仓库,然后再通过阿里云私有仓库去拉取就可以了。 参考项目地址:使用Github Action将国外的Docker镜像转存到阿里云私有仓库 一、Docker简介 Do…

JVM实战—OOM的定位和解决

1.如何对系统的OOM异常进行监控和报警 (1)最佳的解决方案 最佳的OOM监控方案就是:建立一套监控平台,比如搭建Zabbix、Open-Falcon之类的监控平台。如果有监控平台,就可以接入系统异常的监控和报警,可以设置当系统出现OOM异常&…

你知道智能家居与fpc有哪些关联吗?【新立电子】

智能家居,作为现代科技与家居生活深度融合的产物,它不仅仅是一种技术革新,更是一种生活理念的升级,将家居环境打造成为一个更加智能、舒适和安全的生活空间。 智能家居的核心在于其通过互联网、物联网、人工智能等技术手段&#…