网络编程(七)

网络编程(七)

  • UNIX域套接字(本地间进程间通信的技术)(S文件)
    • 基于TCP传输
    • 基于UDP传输

UNIX域套接字(本地间进程间通信的技术)(S文件)

socket同样也可以用于本地通信(类似:管道,共享内存,消息队列,信号。。。)
效率:共享内存 > UNIX域套接字 > 消息队列 > 管道。。。。
UNIX域套接字不会出现丢包现象,非常安全可靠的!
创建套接字时使用本地协议PF_UNIX(或PF_LOCAL)。
分为流式套接字和用户数据报套接字
和其他进程间通信方式相比使用方便、效率更高
常用于前后台进程通信

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

基于TCP传输

TCP方式创建的unix域套接字通信,类似于无名管道,实现双向通信只需要一个文件(用于两个不相关进程或前后台进程)
在bind阶段才创建s文件

在这里插入图片描述
服务端server:

  1. socket(PF_UNIX,SOCK_STREAM)
  2. bind(struct sockaddr_un)
  3. lisen
  4. accept
  5. IO

在这里插入图片描述
客户端client:

  • socket(PF_UNIX,SOCK_STREAM)
  • connect
  • IO
    在这里插入图片描述
    在这里插入图片描述

基于UDP传输

udp方式的unix域套接字通信,类似于有名管道,实现双向通信需要两个文件

unlink(“hello”); 删除已经存在的套接字文件
服务端(server):创建的aaa套接字文件只是用来收数据,使用客户端创建的bbb文件来发数据

  • socket
  • bind
  • IO

在这里插入图片描述
客户端(client):创建的bbb套接字文件只是用来收数据,使用服务端创建的aaa套接字文件来发数据

  • socket
  • bind
  • IO
    在这里插入图片描述
    在这里插入图片描述
    注意:
    当使用socket()创建通信的套接字时:
    1、传入:AF_INET,客户端可以自己不主动绑定IP和端口,那是系统自己会去bind()
    2、传入:AF_UNIX/AF_LOCAL,客户端这边必须主动bind()它的通信文件addr.sun_path的内容以及addr.sun_family,以此告知服务器,它的通信文件位于本地上的哪一个地方,以后通信就使用该文件来进行数据交互!!!服务器也是一样的,需要bind()!!!

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Python打印当前目录下,所有文件名的首字母

代码如下: #!/usr/bin/env python3 """ 按顺序打印当前目录下,所有文件名的首字母(忽略大小写) """ import sys from pathlib import Pathdef main() -> None:ps Path(__file__).parent.glob(…

计算机网络(网络原理及引用)之路由器的基本配置(详细~)

实验目的 熟悉路由各接口的外观、接口的功能、接口的表示方法;掌握带外的管理方法:通过接口console配置;掌握带内的管理方法:通过方式telnet配置;掌握带内的管理方法:通过方式web配置; 路由器…

i.MX8MP平台开发分享(GPC控制器篇)

1.概述 整体来说,i.MX8MP中的电源是由General Power Controller (GPC) 来控制的。GPC可以提供各种电源模式的控制,如低功耗模式、深度睡眠模式等等。GPC包含两个模块,一个是系统模式控制器(SMC),控制系统的…

项目优化方案之---实现邮箱用户登录

之前的项目中我写的基于SpringBoot和Vue的全栈项目已经实现了基本的用户接口开发, 不过其代码的功能单一,而且写的也是有不少漏洞(基本就像刚接手的代码*山一样) 那之后的几篇文章都来分享一下如何优化项目(每一章都独…

【数据结构】链式二叉树(超详细)

文章目录 前言二叉树的链式结构二叉树的遍历方式二叉树的深度优先遍历前序遍历(先根遍历)中序遍历(中根遍历)后序遍历(后根遍历) 二叉树的广度优先遍历层序遍历 二叉树链式结构接口实现二叉树结点个数二叉树叶子结点个数二叉树的深度(高度)二叉树第k层结…

植物大战僵尸杂交版下载链接

前言 植物大战僵尸杂交版是 潜艇伟伟迷 制作并免费向大家开放畅玩并且持续更新关卡。 下载教程 1.打开作者主页:https://space.bilibili.com/97213827/dynamic 2.作者置顶发布的是最新版,直接打开链接安装就好了 3.下载链接:https://pan.qu…

DL-33G电流继电器 新型导轨安装 JOSEF约瑟

用途 DL-30系列电流继电器,用于电机、变压器和输电线的过负荷和短路保护线路中,作为起动元件。 技术参数 按整定值的范围来分:每整定值的动作误差不大于6% 继电器刻度极限误差不大于6%。 动作值的变差不大于6% 对于DL-31、32、33、34电流继电器的返…

【第3章】SpringBoot实战篇之登录接口(含JWT和拦截器)

文章目录 前言一、JWT1. 什么是JWT2. 使用场景3. 结构3.1 Header3.2 Payload3.3 Signature 4. 使用 二、案例1.引入库2.JwtUtils3. UserController14. ArticleController 三、拦截器1. 定义拦截器2. 注册拦截器 四、测试1. 登录2. 无token3. 有token4. 全局配置 总结 前言 前面…

vscode怎么点击路径直接跳转对应文件

在vue项目中经常要引入工具类、组件、模版等,想要直接去看对应文件,只能自己找到对应路径再去打开。 我们可用在js项目中创建一个 jsconfig.json文件,TS项目可以创建tsconfig.json 文件代码 {"compilerOptions": {"baseUrl&…

批量归一化(BN)和层归一化(LN)的区别

批量归一化(Batch Normalization, BN)和层归一化(Layer Normalization, LN)是深度学习中常用的两种归一化技术,它们主要用于解决训练过程中的内部协变量偏移问题,加速模型收敛和提高稳定性。 1. 为什么需要…

智能工厂生产设备实时监控技术的UI设计

智能工厂生产设备实时监控技术的UI设计

Java面试八股之死锁和饥饿的区别

死锁和饥饿的区别 定义与现象: 死锁(Deadlock)是指两个或多个线程互相等待对方持有的资源而无法继续执行的情况。每个线程至少持有一个资源,并尝试获取另一个由其他线程持有的资源,从而形成一个循环等待的僵局&#…

QAnything-1.4.01.4.1版本更新!使用指北!

久等了各位!时隔一个多月,我们在4月26日和5月20日接连发布了v1.4.0和v1.4.1两个版本,带来了问答性能,解析效果等多方面的改进,并新增了大量的新功能和新特性 详见:releases 以及 使用说明 最新特性表 开发…

Android 调试桥_ADB命令

Android 调试桥 ADB全称 【Android Debug Bridge】 是Android SDK中的一个命令行工具,adb命令可以直接操作管理Android模拟器或真实的Android设备(手机) ADB的工作原理 启动一个 adb 客户端时,此客户端首先检查是否有已运行的 …

1961. 检查字符串是否为数组前缀 - 力扣

1. 题目 给你一个字符串 s 和一个字符串数组 words ,请你判断 s 是否为 words 的 前缀字符串 。 字符串 s 要成为 words 的 前缀字符串 ,需要满足:s 可以由 words 中的前 k(k 为 正数 )个字符串按顺序相连得到&#xf…

kaggle竞赛系列基于图像对水稻分类代码案例

目录 依赖环境 代码 导入依赖包 定义数据集路径: 创建训练集、验证集和测试集的文件夹: 代码的作用: 设置新的数据集路径与类别名称 代码的作用: 定义数据预处理和增强变换: 代码的作用: 定义数…

Appium自动化环境搭建保姆级教程

APP自动化测试运行环境比较复杂,稍微不注意安装就会失败。我见过不少朋友,装了1个星期,Appium 的运行环境还没有搭好的。 搭建环境本身不是一个有难度的工作,但是 Appium 安装过程中确实存在不少隐藏的比较深的坑,如果…

kafka-集群搭建(在docker中搭建)

文章目录 1、kafka集群搭建1.1、下载镜像文件1.2、创建zookeeper容器并运行1.3、创建3个kafka容器并运行1.3.1、9095端口1.3.2、9096端口1.3.3、9097端口 1.4、重启kafka-eagle1.5、查看 efak1.5.1、查看 brokers1.5.2、查看 zookeeper 1、kafka集群搭建 1.1、下载镜像文件 d…

Vuforia AR篇(五)— 地平面检测

目录 前言一、什么是地平面识别?二、使用步骤三、示例代码四、效果五、总结 前言 在增强现实(AR)应用程序的开发中,地平面识别是一项关键技术,它允许虚拟对象与现实世界的地面进行互动。Vuforia 是一个功能强大的 AR …

javacv ffmpeg使用笔记 (补充中...)

javacv ffmpeg使用笔记 一、maven依赖二、示例代码1. 获取视频时长 三、小技巧 一、maven依赖 使用javacv ffmpeg并指定classifier之后,就不需要额外安装ffmpeg软件(jar包中已经内置)了。 全量依赖包(不推荐)安装包总大…