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

简析SCTP开发指南

目录

  • 前言
  • 一、SCTP基本概念
  • 二、SCTP开发步骤
    • 1. **环境配置**:
    • 2. **建立Socket**:
    • 3. **绑定和监听**:
    • 4. **接收和发送数据**:
    • 5. **关闭连接**:
  • 三、 C语言实现SCTP
    • 3.1SCTP客户端代码:
    • 3.2 SCTP服务器端代码:
    • 函数说明
  • 四、Python实现SCTP
    • 4.1SCTP客户端代码:
    • 4.2SCTP服务端代码:
  • 五、SCTP开发要点
  • 六、常见的应用场景
  • 结论

前言

SCTP (Stream Control Transmission Protocol) 是一个多用途的,端到端的,可靠的传输协议,该协议被设计出来以支持广泛的Internet应用,并且提供了强大的新特性。本文将尝试深入探讨SCTP,为那些寻求在他们的项目中使用SCTP的开发者提供指南。
在这里插入图片描述

一、SCTP基本概念

SCTP是一种传输层协议,结合了TCP的可靠性和UDP的灵活性,同时还引入了更多的新特性。最显著的特性之一就是它支持多路径(multi-homing)和多流(multi-streaming)。

  • 多路径意味着数据可以通过多个IP地址或网络接口发送给同一节点,增强了网络连接的鲁棒性。
  • 多流则意味着SCTP可以在一个单独的连接里发送多个独立的数据流,这使得数据流可以互相独立地被处理,降低了阻塞的可能性。

二、SCTP开发步骤

1. 环境配置

首先,你需要在操作系统级别启用SCTP支持。许多现代的UNIX或Linux发行版已经内置了对SCTP的支持。如果没有,则可能需要安装额外的库或模块。

2. 建立Socket

开发SCTP应用的第一步通常是创建一个socket。在C语言中,这可以通过调用socket函数并指定SCTP协议来实现。例如:int sockfd = socket(AF_INET, SOCK_STREAM, IPPROTO_SCTP);

3. 绑定和监听

然后,你需要将socket绑定到一个IP地址和端口上,并开始监听连接。这可以通过bind和listen函数来实现。

4. 接收和发送数据

一旦建立了连接,你就可以开始发送和接收数据了。在SCTP中,你可以使用sendto和recvfrom函数来发送和接收数据,就像在UDP中那样。

5. 关闭连接

完成数据传输后,你需要关闭连接。这可以通过调用close函数来实现。

三、 C语言实现SCTP

以下是使用C语言实现SCTP客户端和服务器端的示例代码:

3.1SCTP客户端代码:

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <netinet/sctp.h>#define MAX_BUFFER_SIZE 1024int main() {int sockfd, stream;struct sockaddr_in servaddr;char buffer[MAX_BUFFER_SIZE];// 创建SCTP套接字sockfd = socket(AF_INET, SOCK_STREAM, IPPROTO_SCTP);// 设置服务器地址和端口memset(&servaddr, 0, sizeof(servaddr));servaddr.sin_family = AF_INET;servaddr.sin_port = htons(1234);servaddr.sin_addr.s_addr = htonl(INADDR_LOOPBACK); // localhost// 连接到服务器connect(sockfd, (struct sockaddr*)&servaddr, sizeof(servaddr));// 发送数据strcpy(buffer, "Hello, server!");sctp_sendmsg(sockfd, (void*)buffer, strlen(buffer), NULL, 0, 0, 0, 0, 0, 0);// 接收响应memset(buffer, 0, sizeof(buffer));sctp_recvmsg(sockfd, (void*)buffer, sizeof(buffer),NULL, 0, &stream, 0);printf("Received from server: %s\n", buffer);// 关闭连接close(sockfd);return 0;
}

3.2 SCTP服务器端代码:

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <netinet/sctp.h>#define MAX_BUFFER_SIZE 1024int main() {int listenfd, connfd, stream;struct sockaddr_in servaddr, cliaddr;socklen_t len;char buffer[MAX_BUFFER_SIZE];// 创建SCTP监听套接字listenfd = socket(AF_INET, SOCK_STREAM, IPPROTO_SCTP);// 设置服务器地址和端口memset(&servaddr, 0, sizeof(servaddr));servaddr.sin_family = AF_INET;servaddr.sin_port = htons(1234);servaddr.sin_addr.s_addr = htonl(INADDR_ANY);// 绑定地址和端口bind(listenfd, (struct sockaddr*)&servaddr, sizeof(servaddr));// 监听连接listen(listenfd, 5);while (1) {// 接受客户端连接len = sizeof(cliaddr);connfd = accept(listenfd, (struct sockaddr*)&cliaddr, &len);printf("Connected to: %s:%d\n", inet_ntoa(cliaddr.sin_addr), ntohs(cliaddr.sin_port));// 接收客户端数据memset(buffer, 0, sizeof(buffer));sctp_recvmsg(connfd, (void*)buffer, sizeof(buffer),(struct sockaddr*)&cliaddr, &len, &stream, 0);printf("Received from client: %s\n", buffer);// 发送响应strcpy(buffer, "Hello, client!");sctp_sendmsg(connfd, (void*)buffer, strlen(buffer),(struct sockaddr*)&cliaddr, len, 0, 0, stream, 0);// 关闭连接close(connfd);}return 0;
}

函数说明

以下是对使用到的相关函数进行解释说明:

  1. socket():这个函数用于创建套接字。在SCTP编程中,我们使用socket(AF_INET, SOCK_STREAM, IPPROTO_SCTP)来创建一个SCTP套接字,其中AF_INET表示使用IPv4地址族,SOCK_STREAM表示使用面向流的传输方式,IPPROTO_SCTP表示使用SCTP协议。

  2. bind():这个函数用于将套接字绑定到一个特定的地址和端口。在服务器端代码中,我们使用bind(listenfd, (struct sockaddr*)&servaddr, sizeof(servaddr))将监听套接字绑定到服务器的地址和端口。

  3. listen():这个函数用于监听连接请求。在服务器端代码中,我们使用listen(listenfd, 5)开始监听连接请求,其中的参数5表示最大允许的等待连接队列长度。

  4. accept():这个函数用于接受客户端的连接请求并创建新的套接字来与客户端通信。在服务器端代码中,我们使用accept(listenfd, (struct sockaddr*)&cliaddr, &len)来接受客户端的连接请求,其中cliaddr是一个结构体,用于存储客户端的地址信息,lencliaddr结构体的长度。

  5. connect():这个函数用于与服务器建立连接。在客户端代码中,我们使用connect(sockfd, (struct sockaddr*)&servaddr, sizeof(servaddr))来连接到服务器,其中socfd是已创建的SCTP套接字,servaddr是服务器的地址信息。

  6. sctp_sendmsg():这个函数用于发送数据。在客户端和服务器端代码中,我们使用sctp_sendmsg()来发送数据给对方。该函数可以指定发送的数据、目标地址、目标地址长度、流标识等参数。

  7. sctp_recvmsg():这个函数用于接收数据。在客户端和服务器端代码中,我们使用sctp_recvmsg()来接收对方发送的数据。该函数可以指定接收缓冲区、发送方地址、发送方地址长度、流标识等参数。

  8. close():这个函数用于关闭套接字连接。在客户端和服务器端代码中,我们使用close()来关闭与对方的连接。

这些函数的具体用法和参数可参考相关的系统文档或参考资料。请注意,在实际开发中,您可能需要根据需要添加适当的错误处理和异常处理机制,以确保程序的稳定性和健壮性。

这些代码使用了C语言的socket编程接口来实现SCTP的客户端和服务器端。在客户端代码中,通过socket()创建SCTP套接字,使用connect()连接到服务器,并使用sctp_sendmsg()发送数据,使用sctp_recvmsg()接收响应。在服务器端代码中,通过socket()创建SCTP监听套接字,使用bind()绑定地址和端口,使用listen()监听连接,并在循环中使用accept()接受客户端连接,通过sctp_recvmsg()接收客户端数据,使用sctp_sendmsg()发送响应。请注意,在实际开发中,您可能需要添加适当的错误处理和异常处理机制来提高程序的健壮性。

四、Python实现SCTP

以下是使用Python编写的SCTP客户端和服务端的示例代码:

4.1SCTP客户端代码:

import sctp# 创建SCTP客户端套接字
client = sctp.sctpsocket_tcp(socket.AF_INET)# 连接到服务器
client.connect(('localhost', 1234))# 发送数据
data = b'Hello, server!'
client.sctp_send(data)# 接收响应
response = client.recv(1024)
print('Received from server:', response.decode())# 关闭连接
client.close()

4.2SCTP服务端代码:

import sctp# 创建SCTP服务端套接字
server = sctp.sctpsocket_tcp(socket.AF_INET)# 绑定地址和端口
server.bind(('localhost', 1234))# 监听连接
server.listen()while True:# 接受客户端连接client, address = server.accept()print('Connected to:', address)# 接收客户端数据data = client.recv(1024)print('Received from client:', data.decode())# 发送响应response = b'Hello, client!'client.sctp_send(response)# 关闭连接client.close()

这些代码使用了第三方库sctp来实现SCTP的客户端和服务端。您需要先安装该库,可以使用以下命令进行安装:

pip install sctp

请注意,上述代码仅提供了基本的SCTP客户端和服务端的实现示例,并没有包含处理错误和异常情况的逻辑。在实际开发中,您可能需要添加适当的错误处理和异常处理机制来提高程序的健壮性。

五、SCTP开发要点

在开发SCTP应用时,还需要注意以下几点:

  • 了解SCTP特性:理解SCTP的多路径和多流特性,以及它们如何影响你的应用设计和性能。

  • 错误处理:处理网络编程中的各种错误情况是至关重要的。你需要确保正确处理各种错误条件,例如网络断开,数据包丢失等。

  • 性能优化:SCTP提供了许多参数可以调整,以优化你的应用性能。例如,你可以调整流控制参数,以改变发送和接收数据的速率。

六、常见的应用场景

当谈到SCTP(Stream Control Transmission Protocol)的实际开发用例时,以下是一些常见的应用场景:

  1. VoIP通信:SCTP可用于语音通信应用程序,如VoIP。它提供了可靠的数据传输,同时支持多个流和多个消息。这使得它成为处理语音通信中的丢包和延迟问题的理想选择。

  2. 实时多媒体传输:SCTP可以用于实时多媒体传输,如视频流或音频流。它提供了流控制和拥塞控制功能,确保高质量的传输并减少网络拥塞的影响。

  3. 数据库复制:SCTP可以用于数据库复制,将数据从一个数据库服务器传输到另一个数据库服务器。通过使用SCTP的多个流,可以并行地传输多个数据库操作,提高传输效率和性能。

  4. 高可靠性应用程序:SCTP的可靠性和容错性使其成为需要高可靠性的应用程序的理想选择,例如电力系统监控、航空航天系统等。SCTP的多流和多消息特性可以提供数据冗余和快速故障恢复机制。

  5. 文件传输:SCTP可以用于大文件的传输,因为它可以将文件分割成多个消息进行传输,并支持流控制,确保数据传输的可靠性和完整性。

  6. M3UA:在传输层协议中,SCTP(Stream Control Transmission Protocol)在M3UA(MTP Level 3 User Adaptation Layer)中被广泛应用。M3UA是一种ISDN标准化组织(ITU-T)的协议,它定义了将SS7(Signaling System No. 7)信令传输到IP网络中的方法。M3UA使用SCTP作为底层传输协议来提供可靠的消息传递。它使用SCTP的多流功能来同时处理多个信令会话,从而提供了更高的容量和适应性。通过将SCTP作为M3UA的底层传输协议,可以提供可靠、高效和灵活的信令传输。SCTP的特性使其成为一种理想的协议选择,在面向信令的应用中得到广泛应用,例如电信网络中的信令传输和移动通信网络中的信令控制。。

这些只是SCTP实际开发用例的一些示例。由于SCTP具有可靠性、可扩展性和高性能的特点,它在许多应用领域都有广泛的应用潜力。

结论

SCTP是一种强大的传输协议,提供了许多超乎TCP和UDP的先进特性。如果你考虑在你的应用中使用SCTP,希望这篇博客能为你提供有用的指引和启示。

相关文章:

简析SCTP开发指南

目录 前言一、SCTP基本概念二、SCTP开发步骤1. **环境配置**&#xff1a;2. **建立Socket**&#xff1a;3. **绑定和监听**&#xff1a;4. **接收和发送数据**&#xff1a;5. **关闭连接**&#xff1a; 三、 C语言实现SCTP3.1SCTP客户端代码&#xff1a;3.2 SCTP服务器端代码&a…...

把Android手机变成电脑摄像头

一、使用 DroidCam 使用 DroidCam&#xff0c;你可以将手机作为电脑摄像头和麦克风。一则省钱&#xff0c;二则可以在紧急情况下使用&#xff0c;比如要在电脑端参加一个紧急会议&#xff0c;但电脑却没有摄像头和麦克风。 DroidCam 的安卓端分为免费的 DroidCam 版和收费的 …...

Linux线程篇(中)

有了之前对线程的初步了解我们学习了什么是线程&#xff0c;线程的原理及其控制。这篇文章将继续讲解关于线程的内容以及重要的知识点。 线程的优缺点&#xff1a; 线程的缺点 在这里我们来谈一谈线程健壮性&#xff1a; 首先我们先思考一个问题&#xff0c;如果一个线程出现…...

深度学习优化入门:Momentum、RMSProp 和 Adam

目录 深度学习优化入门&#xff1a;Momentum、RMSProp 和 Adam 病态曲率 1牛顿法 2 Momentum:动量 3Adam 深度学习优化入门&#xff1a;Momentum、RMSProp 和 Adam 本文&#xff0c;我们讨论一个困扰神经网络训练的问题&#xff0c;病态曲率。 虽然局部极小值和鞍点会阻碍…...

LeetCode 面试题 01.09. 字符串轮转

文章目录 一、题目二、C# 题解 一、题目 字符串轮转。给定两个字符串 s1 和 s2&#xff0c;请编写代码检查 s2 是否为 s1 旋转而成&#xff08;比如&#xff0c;waterbottle 是 erbottlewat 旋转后的字符串&#xff09;。 点击此处跳转题目。 示例1: 输入&#xff1a;s1 “wa…...

系统上线安全测评需要做哪些内容?

电力信息系统、航空航天、交通运输、银行金融、地图绘画、政府官网等系统再正式上线前需要做安全测试。避免造成数据泄露从而引起的各种严重问题。 那么系统上线前需要做哪些测试内容呢&#xff1f;下面由我给大家介绍 1、安全机制检测-应用安全 身份鉴别 登录控制模块 应提供…...

vue 中 axios 的安装及使用

vue 中 axios 的安装及使用 1. axios 安装2. axios使用 1. axios 安装 首先&#xff0c;打开当前的项目终端&#xff0c;输入 npm install axios --save-dev验证是否安装成功&#xff0c;检查项目根目录下的 package.json,其中的 devDependencies 里面会多出一个axios及其版本…...

数据结构——线性数据结构(数组,链表,栈,队列)

文章目录 1. 数组2. 链表2.1. 链表简介2.2. 链表分类2.2.1. 单链表2.2.2. 循环链表2.2.3. 双向链表2.2.4. 双向循环链表 2.3. 应用场景2.4. 数组 vs 链表 3. 栈3.1. 栈简介3.2. 栈的常见应用常见应用场景3.2.1. 实现浏览器的回退和前进功能3.2.2. 检查符号是否成对出现3.2.3. 反…...

多态(C++)

多态 一、初识多态概念“登场”1>. 多态的构成条件2>. 虚函数3>. 虚函数重写&#xff08;覆盖&#xff09;4>. 虚函数重写的两个例外1. 协变 一 基类和派生类虚函数返回值类型不同2. 析构函数重写&#xff08;基类和派生类析构函数名不同&#xff09; 小结 二、延伸…...

算法leetcode|73. 矩阵置零(rust重拳出击)

文章目录 73. 矩阵置零&#xff1a;样例 1&#xff1a;样例 2&#xff1a;提示&#xff1a;进阶&#xff1a; 分析&#xff1a;题解&#xff1a;rust&#xff1a;go&#xff1a;c&#xff1a;python&#xff1a;java&#xff1a; 73. 矩阵置零&#xff1a; 给定一个 m x n 的矩…...

axios 二次封装

axios 二次封装 基本上每一个项目开发&#xff0c;都必须要二次封装 axios。主要是为了减少重复性工作&#xff0c;不可能每一次发起新请求时&#xff0c;都要重新配置请求域名、请求头 Content-Type、Token 等信息。所以需要把公用的部分都封装成一个函数&#xff0c;每次调用…...

Rust安全之数值

文章目录 数值溢出 数值溢出 编译通过,运行失败 cargo run 1 fn main() {let mut arg std::env::args().skip(1).map(|x| x.parse::<i32>().unwrap()).next().unwrap();let m_i i32::MAX - 1;let a m_i arg;println!("{:?}", a); }thread main panicked…...

4种方法实现html 页面内锚点定位及跳转

使用scrollIntoView进行锚点定位效果 不知道你有没有遇到这样的需求&#xff1a;锚点定位&#xff1f;进入页面某个元素需要出现在可视区&#xff1f;…这一类的需求归根结底就是处理元素与可视区域的关系。我接触了很多前端小伙伴&#xff0c;实现的方式有各种各样的&#xff…...

gitlab配置备忘

版本 gitlab 14.6.2 gitlab备份上传到阿里云oss ### Backup Settings ###! Docs: https://docs.gitlab.com/omnibus/settings/backups.html# gitlab_rails[manage_backup_path] true # gitlab_rails[backup_path] "/var/opt/gitlab/backups"###! Docs: https://…...

基于Centos搭建k8s仓库

系统环境&#xff1a; Red Hat Enterprise Linux 9.1 (Plow) Kernel: Linux 5.14.0-162.6.1.el9_1.x86_64 主机名地址master192.168.19.128node01192.168.19.129node02192.168.19.130 目录 1、关闭防火墙&#xff0c;关闭SElinxu &#xff0c;开启时间同步服务 2、关…...

浅谈泛在电力物联网发展形态与技术挑战

安科瑞 华楠 摘 要&#xff1a;泛在电力物联网是当前智能电网发展的一个方向。首先&#xff0c;总结了泛在电力物联网的主要作用和价值体现&#xff1b;其次&#xff0c;从智能电网各个环节概述了物联网技术在电力领域的已有研究和应用基础&#xff1b;进而&#xff0c;构思并…...

git reset --soft 用法

git reset --soft 是 Git 命令中的一个选项&#xff0c;它用于取消之前的提交&#xff0c;并将取消的更改保留在暂存区。这允许您重新组织提交历史或将更改合并到一个新的提交中&#xff0c;而不影响暂存区和工作目录中的更改。 这个命令的语法是&#xff1a; git reset --so…...

哪些测试仪器可以用于检测静电中和设备的性能

静电设备性能测试通常需要使用一些专门的仪器来进行。以下是一些常见的静电设备性能测试仪器&#xff1a; 1. 静电电压测试仪&#xff1a;用于测量物体表面的静电电压。它通常可以测量正负电压&#xff0c;并具有高精度和快速响应的特点。 2. 静电电荷仪&#xff1a;用于测量物…...

浅析 GlusterFS 与 JuiceFS 的架构异同

在进行分布式文件存储解决方案的选型时&#xff0c;GlusterFS 无疑是一个不可忽视的考虑对象。作为一款开源的软件定义分布式存储解决方案&#xff0c;GlusterFS 能够在单个集群中支持高达 PiB 级别的数据存储。自从首次发布以来&#xff0c;已经有超过十年的发展历程。目前&am…...

ARM开发,stm32mp157a-A7核PWM实验(驱动蜂鸣器,风扇,马达工作)

1.分析框图&#xff1b; 2.比较捕获寄存器&#xff08;产生PWM方波&#xff09;&#xff1b; 工作原理&#xff1a; 1、系统提供一个时钟源209MHZ&#xff0c;需要通过分频器进行分频&#xff0c;设置分频器值为209分频&#xff1b; 2、当定时器启动之后&#xff0c;自动重载…...

群狼调研(长沙眼镜店神秘顾客)|消费者需求研究方案

本文由群狼调研(长沙品牌调研)出品&#xff0c;欢迎转载&#xff0c;请注明出处。消费者需求研究方案是在开展研究之前制定的计划&#xff0c;用于指导研究的设计、实施和分析。以下是一个可能的消费者需求研究方案的大致框架&#xff1a; 1. 研究目标和问题&#xff1a; • …...

电脑入门:宽带路由器常见故障排除技巧

宽带路由器在企业网络中的应用是相当广泛的,在运行的过程中出现故障是在所难免的,虽然故障现象多种多样,引起故障发生的原因也不尽相同,但从大体上可以把这些故障分为硬件故障和软件故障,具体来说就是一些网络连接性问题、配置文件选项问题以及网络协议问题等。 由于路由器…...

基于云原生网关的流量防护实践

作者&#xff1a;涂鸦 背景 在分布式系统架构中&#xff0c;每个请求都会经过很多层处理&#xff0c;比如从入口网关再到 Web Server 再到服务之间的调用&#xff0c;再到服务访问缓存或 DB 等存储。在下图流量防护体系中&#xff0c;我们通常遵循流量漏斗原则进行流量防护。…...

开源与云计算:新的合作模式

&#x1f337;&#x1f341; 博主猫头虎 带您 Go to New World.✨&#x1f341; &#x1f984; 博客首页——猫头虎的博客&#x1f390; &#x1f433;《面试题大全专栏》 文章图文并茂&#x1f995;生动形象&#x1f996;简单易学&#xff01;欢迎大家来踩踩~&#x1f33a; &a…...

前端需要理解的跨平台知识

混合开发是指使用多种开发模开发App的一种开发模式&#xff0c;涉及到两大类技术&#xff1a;原生 Native、Web H5。原生 Native 主要指 iOS&#xff08;Objective C&#xff09;、Android&#xff08;Java&#xff09;&#xff0c;原生开发效率较低&#xff0c;开发完成需要重…...

《基于 Vue 组件库 的 Webpack5 配置》3.将 CSS 提取到单独的文件

使用 webpack 插件 mini-css-extract-plugin 需要额外安装 npm i mini-css-extract-pluginlatest -D&#xff1b; 同时打包 js 和 css 文件时&#xff0c;可参考 entry 高级用法&#xff1b; package.json 的配置如下 const { VueLoaderPlugin } require(vue-loader); // 可…...

2023CCF图形学启明星计划夏令营感想记录

这篇就是纯日记了&#xff0c;想记录一下参加这个夏令营的感想&#xff0c;中间的一些过程&#xff0c;毕竟这对我来说算是一段难忘的经历。 一、了解到的渠道 我个人是比较喜欢图形渲染的&#xff0c;之前也学过GAMES的课程&#xff0c;然后偶然的一天&#xff0c;GAMES101里…...

如何解决“缺失msvcp110.dll”错误,msvcp110.dll丢失要怎样才能修复

今天&#xff0c;我将为大家分享关于电脑提示msvcp110.dll丢失的3种修复方法。希望这些方法能帮助到正在遇到这个问题的朋友们。 首先&#xff0c;我们来了解一下msvcp110.dll文件的作用。msvcp110.dll是Microsoft Visual C 2010 Redistributable Package的一部分&#xff0c;…...

激活函数总结(二十):激活函数补充(SQNL、PLU)

激活函数总结&#xff08;二十&#xff09;&#xff1a;激活函数补充 1 引言2 激活函数2.1 Square nonlinearity (SQNL)激活函数2.2 Piecewise Linear Unit (PLU)激活函数 3. 总结 1 引言 在前面的文章中已经介绍了介绍了一系列激活函数 (Sigmoid、Tanh、ReLU、Leaky ReLU、PR…...

Docker【部署 04】Docker Compose下载安装及实例Milvus Docker compose(CPU)使用说明分享

Docker Compose 下载安装使用说明 1.Compose说明1.1 Overview of installing Docker Compose1.2 Installation scenarios1.2.1 Scenario one: Install Docker Desktop1.2.2 Scenario two: Install the Compose plugin1.2.3 Scenario three: Install the Compose standalone 2.C…...

23种设计模式-7种结构模式

结构型模式简述 把类或对象结合在一起形成一个更大的结构。 装饰器模式&#xff1a;动态的给对象添加新的功能。 代理模式&#xff1a;为其它对象提供一个代理以便控制这个对象的访问。 桥接模式&#xff1a;将抽象部分和它的实现部分分离&#xff0c;使它们都可以独立的变…...

大数据Flink(六十七):SQL Table 简介及运行环境

文章目录 SQL & Table 简介及运行环境 一、​​​​​​​​​​​​​​简介 二、案例...

WPF使用依赖注入

现在依赖注入在.Net里面已经普及&#xff0c;自己常写一些简单的demo倒是无所谓&#xff0c;但偶尔写一点正式的工程&#xff0c;也免不了要使用一下&#xff0c;于是总结了一下在WPF里面使用依赖注入。 在写简单Demo时候&#xff0c;通常是在MainWindow的构造函数里面直接做初…...

玩转科技|了解AI平台桌面客户端—ChatBox

目录 前言 特性 ​编辑 为什么需要 ChatBox&#xff1f; ChatGPT Plus 平替&#xff1f; 下载 支持系统 功能图 使用教程 ​感受 展示 前言 今天小编又来了&#xff0c;推荐给大家一款开源的OpenAI API桌面客户端ChatBox&#xff0c;它支持 Windows、Mac 和 Linux。…...

visual studio 2022.NET Core 3.1 未显示在目标框架下拉列表中

问题描述 在Visual Studio 2022我已经安装了 .NET core 3.1 并验证可以运行 .NET core 3.1 应用程序&#xff0c;但当创建一个新项目时&#xff0c;目标框架的下拉列表只允许 .NET 6.0和7.0。而我在之前用的 Visual Studio 2019&#xff0c;可以正确地添加 .NET 核心项目。 …...

人工智能项目集合推荐(数据集 模型训练 C++和Android部署)

人工智能项目集合推荐(数据集 模型训练 C和Android部署) 目录 人工智能项目集合推荐(数据集 模型训练 C和Android部署) 1.三维重建项目集合 ★双目三维重建 ★结构光三维重建 2.AI CV项目集合 ★人脸检测和人体检测 ★人体姿态估计(人体关键点检测) ★头部朝向估计 …...

C# 服务HTTPS 对 请求被中止: 未能创建 SSL/TLS 安全通道报错

1.如果windows支持HTTPS的TLS协议&#xff0c;则可以直接跳过 &#xff08;Tls12&#xff09; [WebMethod(Description "获取HttpsPost加密服务.")] public string HTTPSPOST(String input,String sUrl) { Log.Add("ReceiveNotice", &qu…...

二级MySQL(七)——表格数据修改

1、修改表格中部分数据 将表格某一行的数据修改&#xff0c;这里用的UPDATE语句&#xff1a; UPDATE tb_student SET studentName 黄涛,native湖北,nation汉 WHERE studentNo 2014210103; 结果&#xff1a; 2、修改表格某一列全部数据 比如性别全部设置为‘女’ UPDATE…...

【日常积累】Linux下sftp搭建

概述 SFTP是Secure File Transfer Protocol的缩写&#xff0c;是安全文件传送协议。可以为传输文件提供一种安全的加密方法。跟ftp几乎语法功能一样。 SFTP是SSH的一部分&#xff0c;是一种传输档案至Blogger伺服器的安全方式。它本身没有单独的守护进程&#xff0c;必须使用s…...

【深入浅出C#】章节 9: C#高级主题:多线程编程和并发处理

多线程编程和并发处理的重要性和背景 在计算机科学领域&#xff0c;多线程编程和并发处理是一种关键技术&#xff0c;旨在充分利用现代计算机系统中的多核处理器和多任务能力。随着计算机硬件的发展&#xff0c;单一的中央处理单元&#xff08;CPU&#xff09;已经不再是主流&a…...

Windows Server服务器安全加固基线配置

一、账户管理、认证授权 一、账户 1、管理缺省账户 安全基线项说明&#xff1a;对于管理员账号&#xff0c;要求更改缺省账户名称&#xff1b;禁用Guest(来宾)账户。 操作步骤&#xff1a;进入控制面板-->管理工具-->计算机管理&#xff0c;在系统工具-->本地用户和组…...

基于NXP i.MX 6ULL核心板的物联网模块开发案例(4)

目录 5 4G模块测试 5.1 网络功能测试 5.2 短信功能测试 5.3 通话功能测试 5.4 GPS定位功能测试 5.5 程序编译 前言 本文主要介绍基于创龙科技TLIMX6U-EVM评估板的物联网模块开发案例,适用开发环境: Windows开发环境:Windows 7 64bit、Windows 10 64bit 虚拟机:VMware15.…...

英语——强调

强调句是英语中常用的一个重点句型,其基本结构是:It+be+被强调部分+that+句子其余部分。 第一节 强调句的基本用法 一、被强调的句子成分 在强调句型中,能够被强调的句子成分通常为主语、宾语、状语等,不能用来强调谓语动词、表语、补语、让步状语、条件状语等。当被强调…...

全流程R语言Meta分析核心技术教程

详情点击链接&#xff1a;全流程R语言Meta分析核心技术教程 一&#xff0c;Meta分析的选题与检索 1、Meta分析的选题与文献检索 1)什么是Meta分析&#xff1f; 2)Meta分析的选题策略 3)精确检索策略&#xff0c;如何检索全、检索准 4)文献的管理与清洗&#xff0c;如何制定文…...

【C++精华铺】9.STL string

目录 1. string类的优势 2. string类的常用接口 2.1 常用构造 1. 空串构造&#xff1a;string(); 2. C串构造&#xff1a;string(const char* s); 3. 拷贝构造&#xff1a;string(const string& str); 4. 字符填充构造&#xff1a;string(size_t n, char c); 5. 迭代…...

【PACS】医学影像管理系统源码带三维重建后处理技术

PACS系统&#xff0c;意为影像归档和通信系统。它是应用在医院影像科室的系统&#xff0c;主要的任务就是把日常产生的各种医学影像&#xff08;包括核磁&#xff0c;CT&#xff0c;超声&#xff0c;各种X光机&#xff0c;各种红外仪、显微仪等设备产生的图像&#xff09;通过各…...

从0开始学go 第一天

今天是开始学go的第x天&#xff0c;前些日子看了看语言&#xff0c;今天找一个web开发来跟着学&#xff0c;记录一下遇到的问题&#xff0c;方便以后复习查阅。 视频看的是https://www.bilibili.com/video/BV1gJ411p7xC?p3&vd_sourceab5bdbd04f4142027c66d604d5285204 视…...

Spring Cloud Nacos详解

目录 1、Spring Cloud Nacos详细介绍2、Spring Cloud Nacos具体案列 Spring Cloud Nacos 是一个由阿里巴巴集团开发的开源分布式系统服务发现、配置管理和服务管理的平台。Nacos 支持多种服务发现方式&#xff0c;包括 DNS 方式、HTTP 和 RPC 方式&#xff0c;同时提供了灵活的…...

2023谷歌开发者大会直播大纲「初稿」

听人劝、吃饱饭,奉劝各位小伙伴,不要订阅该文所属专栏。 作者:不渴望力量的哈士奇(哈哥),十余年工作经验, 跨域学习者,从事过全栈研发、产品经理等工作,现任研发部门 CTO 。荣誉:2022年度博客之星Top4、博客专家认证、全栈领域优质创作者、新星计划导师,“星荐官共赢计…...

react import 引用失效 node_modules/@types/react/index.d.ts not a module.ts

问题描述 react ts的项目&#xff0c;正常使用vs code打开&#xff0c; 先运行 npm install 安装依赖过后 结果所有的react引用依旧标红&#xff0c;如下图所示&#xff1a; 点击红线 show problem(查看问题)&#xff0c;提示node_modules/types/react/index.d.ts not a mod…...