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

Linux——网络(2)

一、通信 --- 不同主机上进程间的通信

  1、IP和端口号

    IP:标识网络中的一台主机 
           本质上 32位的整型数据 
  端口号:
           标识某个进程 
           本质上 16位的整型数据

  2、udp和tcp

  udp的特点:

  •   1.无连接
  •   2.不可靠 

  tcp的特点:

  •   1.面向链接 
  •   2.可靠传输 

  二、udp编程(c/s模型 )

  客户端
  socket 
  sendto 
  ...
  
  服务器端  ---把自己的地址公布出去 
  socket  
  bind //绑定 
  recvfrom 
  ...

1、recvfrom 函数

ssize_t recvfrom(int sockfd,    //socket的fd
                            void *buf,    //保存数据的一块空间的地址 
                           size_t len,    //这块空间的大小 
                              int flags,    // 0  默认的接收方式 --- 阻塞方式 
  struct sockaddr *src_addr,    //用来保存发送方的地址信息 
              socklen_t *addrlen     //表示发送方实际的地址信息大小
         );
         
返回值:
            成功 返回接收到的字节数 
            失败  -1 

2、bind 函数

int bind(int sockfd, struct sockaddr *my_addr, socklen_t addrlen);
功能:如果该函数在服务器端调用,则表示将参数1相关
           的文件描述符文件与参数2 指定的接口地址关联,
           用于从该接口接受数据。

           如果该函数在客户端调用,则表示要将数据从
           参数1所在的描述符中取出并从参数2所在的接口
           设备上发送出去。

      注意:
            如果是客户端,则该函数可以省略,由默认接口发送数据。
参数:
          sockfd                         之前通过socket函数创建的文件描述符,套接字id
       my_addr                        是物理接口的结构体指针。表示该接口的信息。

struct sockaddr                     通用地址结构 --- ip + 端口 
      {
          u_short sa_family;      地址族
          char sa_data[14];       地址信息
      };

3、转换网络地址

      转换成网络地址结构如下:
      struct sockaddr_in                //网络地址结构
      {
          u_short           sin_family; //地址族
          u_short           sin_port;    //地址端口
          struct in_addr  sin_addr;   //地址IP  //"192.168.1.123"
          char               sin_zero[8]; //占位
      };
 (in_addr_t  === unsigned int )
      struct in_addr
      {
          in_addr_t s_addr;
      }

三、tcp编程(c/s模式)

1、tcp 客户端

1).建立连接
socket          //买了一部手机 
bind //可选   //插上sim卡 
connect       //拨打电话 
....
2).通信过程 
read 
write 
close 

2、tcp服务器

1).建立连接 
socket     //买了一部手机 
bind        //插上sim卡 
listen      //监听 客户端的连接请求 
accept   //接听 ---这一步完成之后 连接就建立好了,之后就可以收发数据  
..... 
2).通信过程 
read 
write 
close 

3、tcp的建立过程

tcp三次握手  :

4、connect 函数

int connect(int sockfd, const struct sockaddr *addr,socklen_t addrlen);
   功能:该函数固定有客户端使用,表示从当前主机向目标
             主机发起链接请求。
   参数:sockfd 本地socket创建的套接子id
                 addr 远程目标主机的地址信息。
            addrlen 参数2的长度。
   返回值:成功 0
                 失败 -1;
   struct sockaddr *addr //通用地址结构类型,并没有实际去用,实际用到都是具体地址结构类型

相关文章:

Linux——网络(2)

一、通信 --- 不同主机上进程间的通信 1、IP和端口号 IP:标识网络中的一台主机 本质上 32位的整型数据 端口号: 标识某个进程 本质上 16位的整型数据 2、udp和tcp udp的特点: 1.无连接 2.不可靠 tcp的特点: 1.面…...

结合量子技术解决数据传输安全

初级代码游戏的专栏介绍与文章目录-CSDN博客 我的github:codetoys,所有代码都将会位于ctfc库中。已经放入库中我会指出在库中的位置。 这些代码大部分以Linux为目标但部分代码是纯C的,可以在任何平台上使用。 接前篇:数采网关面…...

【Rust光年纪】提高开发效率:深入了解Rust语言中的数据库客户端和文件处理库

深入探索:Rust语言中多款数据库客户端与文件处理库详解 前言 在现代软件开发中,使用各种数据库和文件处理操作是非常常见的。Rust语言作为一种快速、安全、并发的系统编程语言,也拥有丰富的生态系统和库。本文将介绍几个用于Rust语言的数据…...

【自动驾驶】控制算法(一)绪论与前期准备

写在前面: 🌟 欢迎光临 清流君 的博客小天地,这里是我分享技术与心得的温馨角落。📝 个人主页:清流君_CSDN博客,期待与您一同探索 移动机器人 领域的无限可能。 🔍 本文系 清流君 原创之作&…...

CSDN创作一周年总结

一周年总结 文章目录 一周年总结我的第一篇文章这一年我收获到了什么?1.培养了逻辑能力2.形成了自己的知识库,知识网络3.功利性的收获 我的第一篇文章 不知不觉之间,也已经过去一年了。还记得第一次决定在csdn上写博客,是因为进入…...

World of Warcraft [CLASSIC] the Eye of Eternity [EOE] P1-P2

World of Warcraft [CLASSIC] the Eye of Eternity [EOE] 永恒之眼(蓝龙) 第一阶段 第二阶段 第三阶段 载具1-6技能介绍 World of Warcraft [CLASSIC] the Eye of Eternity [EOE]_永恒之眼 eoe-CSDN博客 永恒之眼怎么出副本呢,战斗结束&am…...

一键翻译全球:多语言支持下的英文翻译工具

随着科技的飞速发展,一系列英文翻译工具应运而生,它们以人工智能为驱动,极大地简化了跨语言交流的过程。本文将带您一窥英文翻译工具探索那些能够帮助我们跨越语言鸿沟的神奇工具。 1.福昕在线翻译 链接直达>>https://fanyi.pdf365.c…...

水战再起波澜,“怡宝”要下好怎样一盘棋?

不少投资者常把那些刚需性强、永远也不可能淘汰的产业称为“日不落产业”,从细分板块来看,水无疑具有一定代表性。农夫山泉掌门人钟晱晱曾直言:“我选择了一个日不落的产业,你永远要喝水,不可能不喝水。” 多年下来&a…...

使用maven快速生成打包文件3

这里再介绍一种打包方式&#xff0c;依赖包分开打包&#xff0c;直接将需要部署的文件打包成一个要锁文件&#xff0c;比如kafka-roma-bin.tar.gz&#xff0c;这里需要两个文件&#xff0c;一个pom2.xml&#xff0c;一个package.xml。 pom2.xml <?xml version"1.0&q…...

Excel技巧(一)

快捷键技巧 原文链接 选取某一行的数据直到最后一行&#xff1a;【CTRL SHIFT ↓ 】或者选取一行后按住SHIFT键&#xff0c;双击下边线就可以快速选取区域。 如果表格中有多行空行&#xff0c;可以先按CTRL SHIFT END&#xff0c;再按CTRL SHIFT 上下键调整&#xff0c;…...

C语言:文件复制

文本文件复制&#xff1a; #include<stdio.h>int main() {FILE* pFile1 NULL;FILE* pFile2 NULL;fopen_s(&pFile1,"D:\\11111.txt","r");fopen_s(&pFile2,"D:\\222.txt", "w");char c;while((cfgetc(pFile1))!EOF){f…...

谈谈建筑项目管理:类型、流程和工具

无论是在材料采购还是供应商管理方面&#xff0c;确保建筑项目按计划进行并控制在预算内始终是一项挑战。 如今&#xff0c;建筑项目管理正逐步采用软件驱动的方法来提升其效率。这一转型显著优化了项目规划、调度和资源配置&#xff0c;使建筑管理更加精确和高效。 什么是建…...

【Vue】生命周期函数

系列文章目录 第五章 生命周期函数 文章目录 系列文章目录 生命周期函数代表的是Vue实例&#xff0c;或者是Vue组件&#xff0c;在网页中各个生命阶段所执行的函数。生命周期函数可以分为创建阶段、挂载阶段、更新阶段以及卸载阶段。 创建阶段&#xff1a;setup挂载阶段&…...

C++系列-文件操作

文件操作 文件类型文本文件二进制文件 文件操作的三大类文件的打开方式ios::app(append)和 ios::ate(at end) 写文件写文件文件步骤读文件文件步骤二进制文件读写写一般数据写特殊数据 程序运行时产生的数据都属于临时数据&#xff0c;一旦程序运行完毕&#xff0c;就会释放&am…...

ES6解构赋值详解;全面掌握:JavaScript解构赋值的终极指南

目录 全面掌握&#xff1a;JavaScript解构赋值的终极指南 一、数组解构赋值 1、基本用法 2、跳过元素 3、剩余元素 4、默认值 二、对象解构赋值 1、基本用法 2、变量重命名 3、默认值 4、嵌套解构 三、复杂的嵌套结构解构 四、函数参数解构赋值 1、对象解构作为函…...

2-73 基于matlab的weber能量法求解齿轮时变啮合刚度的程序

基于matlab的weber能量法求解齿轮时变啮合刚度的程序&#xff0c;能够跑出刚度图&#xff0c;通过求解轮齿部分变形、基体变形及局部接触变形这三部分的变形&#xff0c;进而求得综合弹性变形&#xff0c;最终求出时变啮合刚度。程序已调通&#xff0c;可直接运行。 2- 73 齿轮…...

[C++]set和map的介绍及使用

关于set和map的接口函数部分&#xff0c;只重点介绍一些相较于别的容器有特殊地方的接口&#xff0c;set和map的接口可以触类旁通。 一、概念 &#xff08;一&#xff09;、关联式容器 关联式容器存储的元素是一个个的键值对<key,value>。通过键&#xff08;key&#x…...

【MySQL】MySQL学习笔记(持续更新)

1. 安装MySQL&#xff08;windows环境&#xff09; &#xff08;1&#xff09;在http://www.mysql.com下载*.msi的安装文件&#xff0c;并运行安装&#xff1a; 如&#xff1a;mysql-installer-community-8.0.39.0.msi 全部安装包含如下内容&#xff1a; …...

ArcGIS如何将投影坐标系转回为地理坐标系

有时候两个数据&#xff0c;一个为投影坐标系&#xff0c;另一个为地理坐标系时&#xff0c;在GIS软件中位置无法叠加到一起&#xff0c;这需要将两个或多个数据的坐标系统一&#xff0c;可以直接将地理坐标系的数据进行投影&#xff0c;或将投影坐标系转为地理坐标系。下面介绍…...

Parallels Desktop 19 for Mac 安装虚拟机需要激活吗

Parallels Desktop 19 for Mac 乃是一款适配于 Mac 的虚拟化软件。它能让您在 Mac 计算机上同时运行多个操作系统。您可借此创建虚拟机&#xff0c;并于其中装设不同的操作系统&#xff0c;如 Windows、Linux 或 macOS。使用 Parallels Desktop 19 mac 版时&#xff0c;您可在 …...

技术拆解:豆包接入抖音电商的AI购物链路,从对话到下单如何实现15秒闭环

技术拆解&#xff1a;豆包接入抖音电商的AI购物链路&#xff0c;从对话到下单如何实现15秒闭环前言字节豆包App内测接入抖音电商&#xff0c;实现对话内下单闭环。本文从技术架构角度拆解AI购物链路的实现方式&#xff0c;以及对电商开发者的影响。一、AI购物链路架构用户自然语…...

别再为Containerd私有仓库的HTTPS报错头疼了,用ctr命令的--plain-http参数一键搞定镜像推送

Containerd私有仓库HTTPS报错的终极解法&#xff1a;ctr命令--plain-http实战指南 凌晨三点的告警铃声响起&#xff0c;屏幕上闪烁着熟悉的错误提示——http: server gave HTTP response to HTTPS client。这不是第一次在私有仓库镜像推送时遇到这个拦路虎了。每次修改containe…...

CPLEX 2210 Linux安装指南:Python 3.7~3.10环境配置详解

1. 为什么选择CPLEX 2210&#xff1f; 如果你正在寻找一个强大的数学优化求解器&#xff0c;CPLEX绝对是个不错的选择。作为IBM旗下的商业优化软件&#xff0c;CPLEX在解决线性规划、混合整数规划等问题上表现优异。最新发布的2210版本对Python 3.7到3.10提供了更好的支持&…...

做质检员其实太容易了|云质QMS为您揭秘

质检员入门全流程手册一、质检员的基本业务知识1. 质检员的岗位使命严格执行质量检验标准&#xff0c;对各类生产原料、成品、辅料的质量检验&#xff0c;监控生产工艺的运行情况&#xff0c;对发现的问题及时上报&#xff0c;不断提升产品质量&#xff0c;维护企业质量信誉。2…...

一文搞懂:如何用 Spring AI 搭建 MCP Server 和 Client

MCP 概述 Model Context Protocol&#xff08;MCP&#xff09; 是一套标准化协议&#xff0c;用于实现 AI 模型与外部工具或资源的交互。它提供一致的接口&#xff0c;使 AI 模型能够访问数据库、API、文件系统及其他外部服务&#xff0c;同时支持多种传输机制&#xff0c;满足…...

电源设计新手看过来:手把手教你用SIMPLIS仿真和Matlab拟合,验证自己的环路设计

电源设计新手实战指南&#xff1a;用SIMPLIS与Matlab双剑合璧验证环路稳定性 作为一名刚踏入电源设计领域的新手&#xff0c;最令人头疼的莫过于面对密密麻麻的公式推导后&#xff0c;却无法确定自己设计的补偿网络是否真的能在实际电路中发挥作用。本文将带你用SIMPLIS仿真和M…...

【ESP32-S3】智能小车中的编码电机PID调整技巧

【ESP32-S3】智能小车中的编码电机PID调整技巧PID 微调参数对照表推荐调试顺序&#xff08;最安全&#xff09;常用成品参数PID 微调参数对照表 参数作用太大表现太小表现建议起始值合理范围调整方向Kp 比例反应快慢、跟紧目标速度电机抖、嗡嗡响、抽搐、振荡反应慢、无力、速…...

如何快速下载番茄小说:开源Rust下载器完整指南

如何快速下载番茄小说&#xff1a;开源Rust下载器完整指南 【免费下载链接】Tomato-Novel-Downloader 番茄小说下载器不精简版 项目地址: https://gitcode.com/gh_mirrors/to/Tomato-Novel-Downloader 前言 在数字阅读时代&#xff0c;很多读者喜欢在番茄小说上阅读免费…...

keil5软件安装步骤(附安装包)Keil uVision 5 MDK 超详细下载安装教程

文章目录 前言 Keil5软件摘要 下载Keil5安装包 Keil5安装步骤(保姆级) Keil5入门使用技巧 前言 作为嵌入式开发入门的第一步,keilmdk 下载与安装常常让新手工程师感到困惑。本文将提供完整的keilmdk 安装教程,手把手带你从零开始配置开发环境。无论你是刚接触单片机编程的…...

Fast-GitHub:终极GitHub加速解决方案,让你的下载速度飙升10倍!

Fast-GitHub&#xff1a;终极GitHub加速解决方案&#xff0c;让你的下载速度飙升10倍&#xff01; 【免费下载链接】Fast-GitHub 国内Github下载很慢&#xff0c;用上了这个插件后&#xff0c;下载速度嗖嗖嗖的~&#xff01; 项目地址: https://gitcode.com/gh_mirrors/fa/Fa…...