【linux网络编程】端口

一、端口(Port)概述

在计算机网络中,端口(Port) 是用来标识不同进程或服务的逻辑通信端点。它类似于一座大楼的房间号,帮助操作系统和网络协议区分不同的应用程序,以便正确地传输数据。


1. 端口的作用

在网络通信中,IP地址用于标识主机,而端口用于区分同一主机上的多个服务。例如:

  • 访问网页时,数据传输使用 HTTP协议(端口80)HTTPS协议(端口443)
  • 远程登录服务器时,使用 SSH协议(端口22)
  • 发送邮件时,使用 SMTP协议(端口25)

端口号的作用是确保数据包可以正确地发送到特定的应用程序或服务。


2. 端口的范围

端口号是一个 16位的整数,取值范围为 0~65535,通常分为三类:

  1. 知名端口(Well-Known Ports):0 ~ 1023

    • 这些端口由 IANA(Internet Assigned Numbers Authority) 分配给知名服务,例如:
      • HTTP(80)
      • HTTPS(443)
      • SSH(22)
      • FTP(21)
      • DNS(53)
  2. 注册端口(Registered Ports):1024 ~ 49151

    • 这些端口通常用于软件公司或特定应用程序注册,避免冲突。例如:
      • MySQL数据库(3306)
      • PostgreSQL(5432)
      • Docker(2375)
  3. 动态/私有端口(Dynamic/Private Ports):49152 ~ 65535

    • 这些端口通常用于客户端程序的临时连接(如浏览网页、视频播放等),由操作系统动态分配。

3. 端口如何工作

当一台计算机与另一台计算机通信时,数据包不仅包含 IP地址,还包含 端口号,以确定数据要发送到哪个应用程序。例如:

  1. 浏览器访问网页

    • 你的电脑(客户端)打开网页 http://example.com
    • 客户端随机分配一个 临时端口(如50000),向服务器的 80号端口 发送请求。
    • 服务器使用 80号端口 监听请求,并将网页数据返回到客户端的 50000号端口
  2. SSH 远程连接

    • 客户端(本机):
      ssh user@192.168.1.100
      
    • 客户端使用动态端口(如52000) 连接服务器的 22号端口
    • 服务器接收到数据,并与客户端建立 SSH 连接。

4. 端口的分类

4.1 TCP 端口

  • TCP(传输控制协议)是面向连接的协议,保证数据传输的可靠性。
  • 常见的 TCP 端口:
    • HTTP(80)
    • HTTPS(443)
    • SSH(22)
    • FTP(21)
    • SMTP(25)

4.2 UDP 端口

  • UDP(用户数据报协议)是无连接的协议,传输速度快,但不保证数据完整性。
  • 常见的 UDP 端口:
    • DNS(53)
    • DHCP(67/68)
    • SNMP(161)
    • TFTP(69)

5. 如何查看端口使用情况

在 Linux 或 Windows 中,可以使用以下命令查看端口占用情况:

5.1 Linux 查看端口

# 查看所有监听的端口(TCP 和 UDP)
netstat -tunlp# 查看指定端口是否被占用(如80)
netstat -tulnp | grep :80# 使用 ss 命令(更快)
ss -tulnp

5.2 Windows 查看端口

# 查看所有端口使用情况
netstat -ano# 查看特定端口(如80)
netstat -ano | findstr :80
#查看 Linux 上客户端临时端口范围
cat /proc/sys/net/ipv4/ip_local_port_range
#查看 Windows 上的客户端临时端口范围
netsh int ipv4 show dynamicport tcp

6. 端口转发和防火墙

在服务器或网络设备上,可以使用 端口转发(Port Forwarding)防火墙(Firewall) 规则来控制端口访问。

6.1 端口转发

如果服务器 内网IP(192.168.1.100) 运行了一个 Web 服务器(端口80),可以在路由器或 Linux 上设置端口转发,使外网用户访问:

iptables -t nat -A PREROUTING -p tcp --dport 8080 -j DNAT --to-destination 192.168.1.100:80

这样,外部用户访问 http://your-public-ip:8080 时,会被转发到 192.168.1.100:80

6.2 防火墙控制端口

使用 iptablesfirewalld 允许或阻止端口访问:

# 允许 22 端口(SSH 连接)
iptables -A INPUT -p tcp --dport 22 -j ACCEPT# 阻止 3306 端口(MySQL 远程访问)
iptables -A INPUT -p tcp --dport 3306 -j DROP

7. 端口扫描

黑客或安全研究人员常用端口扫描工具 nmap 来检测服务器上开放的端口:

# 扫描 IP 地址 192.168.1.1 的开放端口
nmap 192.168.1.1

如果不想被扫描,可以关闭不必要的端口,或者使用防火墙限制访问。


8. 总结

  • 端口是网络通信中的逻辑编号,用于区分不同的服务和应用。
  • 端口号范围 0-65535,其中 0-1023 为知名端口,1024-49151 为注册端口,49152-65535 为动态端口。
  • TCP 端口用于可靠传输,UDP 端口用于快速传输。
  • 可以使用 netstatss 命令查看端口占用情况。
  • 可以使用防火墙和端口转发管理端口访问权限。
  • nmap 等工具可用于扫描开放端口,管理员需做好安全防护。

二、客户端的端口与什么绑定?

客户端的端口与什么绑定?

客户端的端口绑定(Bind)本机 IP 地址,用于建立 TCP 或 UDP 连接。具体来说,客户端的端口绑定到:

  • 本机 IP 地址(例如 192.168.0.105
  • 协议类型(TCP 或 UDP)
  • 服务器 IP 地址与端口(用于连接目标服务器)

1. 端口绑定的完整过程

当客户端(你的电脑)访问某个服务器(例如 www.google.com)时,操作系统会动态分配一个端口,并与本机 IP 地址 绑定,用于进行通信。

示例

假设你的本机 IP 是 192.168.0.105,你在浏览器输入 https://www.google.com

  1. 客户端分配端口
    • 操作系统随机分配一个动态端口(例如 50000)。
    • 绑定到 本机 IP 地址 192.168.0.105,用于与服务器通信。
  2. 客户端发起连接
    • 发送请求到服务器 142.250.74.36:443(Google 的 HTTPS 端口)
  3. 服务器响应
    • 服务器的 443 端口(HTTPS)返回数据到 192.168.0.105:50000
  4. 数据传输完成,连接关闭
    • 当浏览器收到数据后,客户端释放 50000 端口,系统可以重新分配给其他程序。

📌 连接绑定关系

客户端(你的电脑)
IP地址:192.168.0.105
端口号:50000 (随机分配)服务器(Google)
IP地址:142.250.74.36
端口号:443 (HTTPS)📌 TCP 连接映射:
192.168.0.105:50000  →  142.250.74.36:443

2. 客户端端口绑定的几种方式

🔹 方式 1:动态绑定(默认)

客户端通常使用操作系统自动分配的端口(49152-65535)。

int sockfd = socket(AF_INET, SOCK_STREAM, 0); 
connect(sockfd, (struct sockaddr *)&server_addr, sizeof(server_addr));

📌 特点

  • 端口由系统随机分配,避免端口冲突。
  • 适用于浏览器、API 请求、远程连接等。

🔹 方式 2:手动绑定(bind 绑定)

有些应用(如 P2P、VPN)希望使用固定端口,可以手动绑定:

struct sockaddr_in client_addr;
client_addr.sin_family = AF_INET;
client_addr.sin_addr.s_addr = htonl(INADDR_ANY);
client_addr.sin_port = htons(50000);  // 绑定 50000 端口bind(sockfd, (struct sockaddr *)&client_addr, sizeof(client_addr));
connect(sockfd, (struct sockaddr *)&server_addr, sizeof(server_addr));

📌 特点

  • 适用于 VoIP、P2P、游戏服务器、VPN
  • 如果端口被占用,会导致 bind() 失败。

🔹 方式 3:绑定特定的 IP

有时,客户端有多个网卡(多个 IP),需要指定使用某个 IP:

inet_pton(AF_INET, "192.168.1.100", &client_addr.sin_addr);
bind(sockfd, (struct sockaddr *)&client_addr, sizeof(client_addr));

📌 特点

  • 适用于服务器有多个网卡的情况(如公网和内网双 IP)。
  • 可用于指定特定网络接口

3. 绑定的三要素

客户端的端口绑定到:

  1. 本机 IP 地址(如 192.168.0.105)。
  2. 协议(TCP/UDP)。
  3. 目标服务器的 IP 和端口(如 142.250.74.36:443)。

📌 绑定示例

客户端:192.168.0.105:50000  →  服务器:142.250.74.36:443(HTTPS)
客户端:192.168.0.105:50001  →  服务器:8.8.8.8:53(DNS 查询)

如果同一个 IP 需要发起多个连接,操作系统会自动分配不同的端口,避免冲突。


4. 为什么客户端端口是随机的?

🔹 避免端口冲突

  • 如果所有客户端都使用 固定端口(如 50000),不同程序之间会发生冲突
  • 操作系统通过 随机分配端口,确保多个连接可以同时进行。

🔹 提高安全性

  • 随机端口 避免攻击者猜测客户端端口,减少攻击风险(如端口扫描)。

🔹 支持多个连接

  • 例如,你同时打开多个 网页,每个网页都会使用不同的客户端端口
192.168.0.105:50000  →  www.google.com:443
192.168.0.105:50001  →  www.facebook.com:443
192.168.0.105:50002  →  www.github.com:443

这样,浏览器可以同时加载多个网页,而不会发生端口冲突。


5. 如何查看端口绑定情况?

🔹 Windows

使用 netstat 命令:

netstat -ano | findstr :50000

如果你想查看哪个程序绑定了端口:

tasklist | findstr 21612

🔹 Linux

netstat -tulnp | grep :50000

或者:

ss -tulnp

6. 服务器端端口绑定

服务器端的端口是固定的,例如:

  • Web 服务器(HTTP):监听 80 端口
  • Web 服务器(HTTPS):监听 443 端口
  • SSH 服务器:监听 22 端口

服务器端通常绑定:

struct sockaddr_in server_addr;
server_addr.sin_family = AF_INET;
server_addr.sin_addr.s_addr = INADDR_ANY; // 绑定所有本机 IP
server_addr.sin_port = htons(80); // 绑定 80 端口
bind(sockfd, (struct sockaddr *)&server_addr, sizeof(server_addr));
listen(sockfd, 5);

📌 客户端连接服务器

客户端 192.168.0.105:50000 → 服务器 142.250.74.36:80
客户端 192.168.0.105:50001 → 服务器 142.250.74.36:80

服务器端使用固定端口,客户端使用随机端口 来访问。


7. 端口绑定总结

绑定对象绑定到作用
客户端端口本机 IP 地址用于发送请求
服务器端口固定端口(80、443、22)监听连接
动态端口49152-65535客户端自动分配

🚀 核心要点

  1. 客户端的端口 绑定到 本机 IP 地址,用于与服务器通信。
  2. 操作系统自动分配端口(49152-65535),避免端口冲突。
  3. 服务器端使用固定端口,客户端使用随机端口 来访问。
  4. 可以手动绑定端口,但可能导致端口冲突(如 VPN、P2P)。

三、实例

  C:\Users\xingz>netstat -ano协议   本地地址               外部地址                状态            PIDTCP    0.0.0.0:7897           0.0.0.0:0              LISTENING       21612TCP    0.0.0.0:9012           0.0.0.0:0              LISTENING       15564TCP    127.0.0.1:1655         127.0.0.1:39797        ESTABLISHED     2864TCP    127.0.0.1:1855         127.0.0.1:7897         ESTABLISHED     22784TCP    127.0.0.1:3335         127.0.0.1:39797        ESTABLISHED     2864TCP    127.0.0.1:5080         127.0.0.1:62226        ESTABLISHED     10468TCP    127.0.0.1:6114         127.0.0.1:7897         TIME_WAIT       0TCP    127.0.0.1:6122         127.0.0.1:7897         ESTABLISHED     22784TCP    127.0.0.1:6219         127.0.0.1:7897         ESTABLISHED     22784TCP    127.0.0.1:6296         127.0.0.1:7897         ESTABLISHED     22784TCP    127.0.0.1:6308         127.0.0.1:7897         TIME_WAIT       0TCP    127.0.0.1:6370         127.0.0.1:7897         ESTABLISHED     22784TCP    127.0.0.1:6382         127.0.0.1:6381         TIME_WAIT       0TCP    127.0.0.1:6386         127.0.0.1:7897         ESTABLISHED     22784UDP    127.0.0.1:49664        127.0.0.1:49664                        4984UDP    192.168.0.105:137      *:*                                    4UDP    192.168.0.105:138      *:*                                    4

解析你的 netstat 活动连接信息

你的 netstat 结果列出了 所有当前活动的 TCP 和 UDP 连接,包含:

  • 监听端口(LISTENING)
  • 已建立的连接(ESTABLISHED)
  • 等待状态的连接(TIME_WAIT、CLOSE_WAIT、LAST_ACK 等)

1. LISTENING 端口(正在监听)

这些端口是服务器程序正在监听的端口,意味着某些服务正在等待连接。例如:

TCP    0.0.0.0:135            0.0.0.0:0              LISTENING       1516
TCP    0.0.0.0:445            0.0.0.0:0              LISTENING       4
TCP    0.0.0.0:7897           0.0.0.0:0              LISTENING       21612

常见监听端口的含义

端口号进程 ID (PID)作用
1351516远程过程调用(RPC),Windows 用于 DCOM
4454Windows 文件共享(SMB)
789721612这个端口在你的系统里频繁出现,可能是某个本地应用的后台服务
50409412可能与 Microsoft EdgeCortana 相关
768015700可能是 Windows 的 Delivery Optimization(P2P 更新)

如何查看进程名称?

Windows:

tasklist | findstr 21612

Linux:

lsof -i :7897

2. ESTABLISHED(已建立的连接)

这些是当前正在使用的网络连接

TCP    192.168.0.105:1856     223.109.175.205:443    ESTABLISHED     21612
TCP    192.168.0.105:1858     120.221.204.185:7826   ESTABLISHED     21612
TCP    192.168.0.105:4828     223.5.5.5:443          ESTABLISHED     21612
TCP    192.168.0.105:5478     223.5.5.5:443          ESTABLISHED     21612

📌 含义解析

  • 192.168.0.105 是你的本机 IP。
  • 223.5.5.5:443阿里 DNS 服务器,用于 HTTPS 连接
  • 120.221.204.185:7826 可能是 游戏、云服务 或者 即时通信软件(如微信、QQ)
  • PID 21612 可能是某个活跃的程序,如 浏览器、聊天软件、云服务

如何确认这些 IP 是什么?

你可以使用 nslookupwhois

nslookup 223.109.175.205
whois 223.109.175.205

3. TIME_WAIT(等待超时)

TCP    127.0.0.1:6308         127.0.0.1:7897         TIME_WAIT       0
TCP    192.168.0.105:6115     120.253.253.98:443     TIME_WAIT       0

TIME_WAIT 说明:

  • 这些连接已经被关闭,但为了确保数据完整性,系统会等待一段时间(通常是 2*MSL,最大生存时间)。
  • 这种情况通常发生在 短连接 HTTP 请求(如访问网页)。

如何减少 TIME_WAIT 连接数量?

Windows:

netsh int tcp set global MaxUserPort=65535
netsh int tcp set global TcpTimedWaitDelay=30

Linux:

echo 1 > /proc/sys/net/ipv4/tcp_tw_reuse

4. CLOSE_WAIT(被动关闭)

TCP    127.0.0.1:6419         127.0.0.1:7897         CLOSE_WAIT      22784
TCP    192.168.0.105:6420     123.249.98.69:443      CLOSE_WAIT      21612

📌 CLOSE_WAIT 说明

  • 服务器(或本机)没有正确关闭连接
  • 这通常是 进程没有释放 socket 资源,可能是软件的 bug 或网络异常。

如何修复 CLOSE_WAIT

  1. 终止进程:
    taskkill /PID 22784 /F
    
  2. 检查应用是否未正确关闭 socket:
    • Web 服务器、数据库、远程桌面 可能需要优化连接管理。

5. LAST_ACK(等待最后确认)

TCP    192.168.0.105:6431     112.34.111.235:443     LAST_ACK        21612
TCP    192.168.0.105:6470     112.34.111.235:443     LAST_ACK        21612

📌 LAST_ACK 说明

  • 服务器已经关闭连接,但客户端还未确认
  • 可能是网络丢包,或者客户端软件的关闭逻辑有问题。

如何解决 LAST_ACK

  • 检查防火墙、路由器是否丢包
  • 检查网络是否稳定(特别是 Wi-Fi、VPN)。
  • 如果 LAST_ACK 连接持续很长时间,可以尝试重启该进程:
    taskkill /PID 21612 /F
    

6. UDP 端口(无连接)

UDP 端口通常用于:

  • DNS 解析(5353, 53)
  • 网络发现(3702)
  • SNMP 监控(161)
  • 游戏或 VoIP(随机高端口)
UDP    0.0.0.0:123            *:*                                    15676
UDP    0.0.0.0:3702           *:*                                    5820
UDP    0.0.0.0:5353           *:*                                    22784
UDP    0.0.0.0:7897           *:*                                    21612
UDP    0.0.0.0:59964          *:*                                    22784
UDP    192.168.0.105:137      *:*                                    4

📌 UDP 端口解析

  • 123NTP(网络时间同步)
  • 3702Windows 设备发现(WS-Discovery)
  • 5353mDNS(Bonjour,局域网服务发现)
  • 137NetBIOS(局域网共享)

如何关闭不需要的 UDP 端口?

Windows:

net stop W32Time

Linux:

systemctl stop systemd-timesyncd

7. 如何分析哪个程序占用了某个端口?

Windows

netstat -ano | findstr :7897
tasklist | findstr 21612

Linux

lsof -i :7897
netstat -tulnp | grep 7897

总结

  1. 监听的端口(LISTENING):服务器应用正在等待连接。
  2. 已建立的连接(ESTABLISHED):正在通信的 TCP 连接。
  3. TIME_WAIT:等待超时,防止旧连接影响新连接。
  4. CLOSE_WAIT:进程未正确关闭连接,可能有 bug。
  5. LAST_ACK:服务器等待客户端确认关闭,可能有网络丢包。
  6. UDP 端口:用于 DNS、NTP、游戏、mDNS 发现等。

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

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

相关文章

【氮化镓】高输入功率应力诱导的GaN 在下的退化LNA退化

2019年,中国工程物理研究院电子工程研究所的Tong等人基于实验与第一性原理计算方法,研究了Ka波段GaN低噪声放大器(LNA)在高输入功率应力下的退化机制。实验结果表明,在27 GHz下施加1 W连续波(CW)输入功率应力后,LNA的增益下降约1 dB,噪声系数(NF)增加约0.7 dB。进一…

【设计模式】掌握建造者模式:如何优雅地解决复杂对象创建难题?

概述 将一个复杂对象的构建与表示分离,使得同样的构建过程可以创建不同的表示。 分离了部件的构造(由Builder来负责)和装配(由Director负责)。 从而可以构造出复杂的对象。这个模式适用于:某个对象的构建过程复杂的情况。 由于实现了构建和装配的解耦。…

golang从入门到做牛马:第三篇-Go程序的“骨骼架构”

在编程的世界里,Go语言就像一位优雅的舞者,它的每一个动作都简洁而高效。而要真正领略Go语言的魅力,我们得先从它的基本结构开始。Go程序的结构清晰、逻辑严谨,就像一座精心设计的建筑,每一部分都有其独特的功能和位置。接下来,就让我们一起拆解Go程序的“骨骼架构”,看…

数据结构——哈希表的实现

目录 1 哈希概念 1.1 直接定址法 1.2 哈希冲突 1.3 负载因子 1.4 将关键字转成整数 1.5 哈希函数 1.5.1 除法散列法 / 除留余数法 1.5.2 乘法散列法 1.5.3 全域散列法 1.5.4 其他方法 1.6 处理哈希冲突 1.6.1 开放地址法 1.6.1.1 线性探测 ​编辑 1.6.1.2 二次探测 1.6.…

解决AWS EC2实例无法使用IAM角色登录AWS CLI

问题背景 有时,我们希望一台AWS EC2实例,即云服务器,能够使用AWS CLI访问AWS管理控制台资源。 例如,这里,我们想让它能够列出所有IAM用户组。 aws iam list-groups于是,我们使用下面的命令,在…

文件系统调用─── linux第17课

目录 linux 中man 2和man 3的区别 文件内容介绍 C语言文件接口 示例: 输出信息到显示器,你有哪些方法 总结: 系统文件I/O 文件类的系统调用接口介绍 示例 open 函数具体使用哪个,和具体应用场景相关, write read close lseek ,类比C文件相关接…

【Go学习实战】03-2-博客查询及登录

【Go学习实战】03-2-博客查询及登录 读取数据库数据初始化数据库首页真实数据分类查询分类查询测试 文章查询文章查询测试 分类文章列表测试 登录功能登录页面登录接口获取json参数登录失败测试 md5加密jwt工具 登录成功测试 文章详情测试 读取数据库数据 因为我们之前的数据都…

警惕AI神话破灭:深度解析大模型缺陷与禁用场景指南

摘要 当前AI大模型虽展现强大能力,但其本质缺陷可能引发系统性风险。本文从认知鸿沟、数据困境、伦理雷区、技术瓶颈四大维度剖析大模型局限性,揭示医疗诊断、法律决策等8类禁用场景,提出可信AI建设框架与用户防护策略。通过理论分析与实操案…

Android 源码下载以及编译指南

和你一起终身学习,这里是程序员Android 经典好文推荐,通过阅读本文,您将收获以下知识点: 一、下载AOSP前的准备二、国内网络下 clone 清华大学开源软件镜像三、编写Python脚本,开始下载android 源码四、源码下载工具包五、编译 一…

Windows 远程桌面多端口访问,局域网虚拟IP映射多个Windows 主机解决方案

情景 项目现场4G路由局域网中两台主机通过VPN连接到公司内网,实现远程管理,要求映射两个Windows 桌面进行管理。 目录 情景 网络 思路 已知 问题解决 1.客户端通过VPN进入内网路由器配置NAT 2.使用远程主机远程桌面功能:IP端口号访问 …

子数组问题——动态规划

个人主页:敲上瘾-CSDN博客 动态规划 基础dp:基础dp——动态规划-CSDN博客多状态dp:多状态dp——动态规划-CSDN博客 目录 一、解题技巧 二、最大子数组和 三、乘积最大子数组 四、最长湍流子数组 五、单词拆分 一、解题技巧 区分子数组&…

数据结构(蓝桥杯常考点)

数据结构 前言:这个是针对于蓝桥杯竞赛常考的数据结构内容,基础算法比如高精度这些会在下期给大家总结 数据结构 竞赛中,时间复杂度不能超过10的7次方(1秒)到10的8次方(2秒) 空间限制&#x…

使用Modelsim手动仿真

FPGA设计流程 在设计输入之后,设计综合前进行 RTL 级仿真,称为综合前仿真,也称为前仿真或 功能仿真。前仿真也就是纯粹的功能仿真,主旨在于验证电路的功能是否符合设计要求,其特点是不考虑电路门延迟与线延迟。在完成一个设计的代码编写工作之后,可以直接对代码进行仿真,…

化工厂防爆气象站:为石油化工、天然气等领域提供安全保障

【TH-FB02】在石油化工、天然气等高危行业中,安全生产是至关重要的。这些行业常常面临着易燃易爆、有毒有害等潜在风险,因此,对气象条件的监测和预警显得尤为重要。化工厂防爆气象站作为一种专门设计用于这些特殊环境的气象监测设备&#xff…

Mysql InnoDB 行格式解析

该篇是学习笔记,笔记来源于《MySQL是怎样运行的:从根儿上理解MySQL》 InnoDB 是一个将表中的数据存储到磁盘上的存储引擎,所以即使关机后重启我们的数据还是存在的。而真正处理数据的过程是发生在内存中的,所以需要把磁盘中的数据…

【测试框架篇】单元测试框架pytest(4):assert断言详解

一、前言 用例三要素之一就是对预期结果的断言。 何为断言?简单来说就是实际结果和期望结果去对比,符合预期就测试pass,不符合预期那就测试 failed。断言内容就是你要的预期结果。断言包含对接口响应内容做断言、也包含对落DB的数据做断言。…

基础玩转物联网-4G模块如何快速实现与MQTT服务器通信

目录 1 前言 2 环境搭建 2.1 硬件准备 2.2 软件准备 2.3 硬件连接 2.4 检查驱动 3 连接MQTT服务器 3.1 创建MQTT监听Topic 3.2 打开配置工具读取基本信息 3.3 设置连接参数进行数据交互 4 总结 1 前言 MQTT(Message Queuing Telemetry Transport)是一种轻…

平面机械臂运动学分析

平面机械臂运动学分析 一 整体概述1 研究步骤: 二 正向1 几何分析2 matlab 仿真模拟(1)实现效果(2)matlab代码: 3 DH矩阵计算法(1)计算公式(2)计算结果验证&a…

Hadoop、Hive、Spark的关系

Part1:Hadoop、Hive、Spark关系概览 1、MapReduce on Hadoop 和spark都是数据计算框架,一般认为spark的速度比MR快2-3倍。 2、mapreduce是数据计算的过程,map将一个任务分成多个小任务,reduce的部分将结果汇总之后返回。 3、HIv…

1.4 单元测试与热部署

本次实战实现Spring Boot的单元测试与热部署功能。单元测试方面,通过JUnit和Mockito等工具,结合SpringBootTest注解,可以模拟真实环境对应用组件进行独立测试,验证逻辑正确性,提升代码质量。具体演示了HelloWorld01和H…