1.IPC通信
IPC 进程间通信方式:
   
   共享内存是最高效的进程间通信方式 
       
                        
共享内存:
   1.是一块,内核预留的空间 
   2.最高效的通信方式,避免了用户空间到内核空间的数据拷贝  
IPC通信方式 ---操作流程类似的 
 操作:
 (1)产生key值
 #include <sys/types.h>
        #include <sys/ipc.h>
       key_t ftok(const char *pathname, int proj_id);
        功能:
              将pathname 和 proj_id 转换为 key值 
        参数:
         @pathname  //给一个路径名 
         @proj_id   //工程id       eg: 'A'
 如:key_t key = ftok("/",'A');
        返回值
           成功 key值
           失败 -1     

(2)通过key获取ipc对象 (共享内存)
         shmget   //shared memory 
 1、申请对象:shmget()
     #include <sys/ipc.h>
     #include <sys/shm.h>
     ps aux|grep a.out
         shared memory get         IPC_CREAT|0666
     int shmget(key_t key, size_t size, int shmflg);
     功能:
          使用唯一键值key向内核提出共享内存使用申请
     参数:key   唯一键值
           size  要申请的共享内存大小
           shmflg 申请的共享内存访问权限,八进制表示
           如果是第一个申请,则用IPC_CREAT
           如果要检测是否存在,用IPC_EXCL
 如:int shmid = shmget(key,1024,IPC_CREAT | 0666); 
   返回值:
             成功 返回共享内存id,一般用shmid表示
             失败  -1;
    
(3)共享内存 绑定 
         shmat 
    映射对象:shmat()
     void *shmat(int shmid, const void *shmaddr, int shmflg);
     功能:将指定shmid对应的共享内存映射到本地内存。
     参数:shmid 要映射的本地内存
           shmaddr 本地可用的地址,如果不确定则用NULL,表示
                   由系统自动分配。
           shmflg  
           0         ,  表示读写
           SHM_RDONLY, 只读
 如:void*p = shmat(shmid,NULL,0); 
   返回值:
            成功 返回映射的地址,一般等于shmaddr
             失败 (void*)-1        

(4)解除绑定(映射)
    撤销映射:shmdt
     int shmdt(const void *shmaddr);
     功能:将本地内存与共享内存断开映射关系。
     参数:shmaddr 要断开的映射地址。
     返回值:成功  0
             失败  -1;
    
      
(5)销毁IPC对象 
         删除对象:shmctl
     int shmctl(int shmid, int cmd, struct shmid_ds *buf); //ctl = control 
     功能:
          修改共享内存属性,也可以删除指定的共享内存对象。
     参数:shmid 要删除的共享内存对象
           cmd 
                IPC_RMID 删除对象的宏
           buff  NULL 表示只删除对象。
 如:shmdt(p);    
返回值:成功 0
             失败 -1

2.实现进程间通信同步
pause函数:pause();
在输入进程的循环中用kill(pid,SIGUSR1);
在接收进程中用signal(SIGUSR1,handler);
全局区定义空的handler,接收进程的接收循环中用pause();
3.网络通信
实现网络通信:
 (1)物理层面 有一个 信息通路  
   有线,无线 ,5G,4G ,星链 
 (2)软件层面(逻辑层面) 也需要 一个通路 
网络通信体系:

osi七层模型:

 IP地址
是网络中主机的唯一标识,它由网络地址和主机号组成。网络地址是子网的唯一标识,类似于电话号码的区号;主机号是子网内每台主机的编号。在现在(IPv4)的网络中,IP地址是32bit的二进制数,采用大端字节序:
表示方法(点分十进制)
直接使用二进制数,不容易记忆,为了方便记忆,将32位二进制码划分为4个字节,每个字节转化成相应的十进制数,字节之间用“.”来分隔,这种表示方法,称之为“点分十进制表示法”。
例:192 .168 .1 .1
11000000 10101000 00000001 00000001

|   类型  |   范围  |   用途  | |
|   A类  |   0.x.x.x---127.x.x.x.x  |   10.x.x.x  |   私网(局域网)地址  | 
|   127.x.x.x  |   环回网络地址  | ||
|   其他  |   大型主干网地址  | ||
|   B类  |   128.x.x.x - 191.x.x.x  |   172.16.x.x - 172.31.x.x  |   私网(局域网)地址  | 
|   169.254.x.x  |   表示没有找到DHCP服务器  | ||
|   其他  |   主干(城市)网地址  | ||
|   C类  |   192.x.x.x - 223.x.x.x  |   192.168.x.x  |   私网(局域网)地址  | 
|   D类  |   组播地址  | ||
|   E类  |   保留  | ||
子网掩码
获取IP地址中的网络地址和主机地址:

TCP(即传输控制协议):是一种面向连接的传输层协议,它能提供高可靠性通信(即数
 据无误、数据无丢失、数据无失序、数据无重复到达的通信)
* 适用情况:
 1. 适合于对传输质量要求较高,以及传输大量数据
 的通信。
 2. 在需要可靠数据传输的场合,通常使用TCP协议
 3. QQ等即时通讯软件的用户登录账户管理相关
 的功能通常采用TCP协议
tcp协议特点:
 1. 面向连接   //类似打电话通话之前 ,必须先打通 
 2. 可靠传输   //保证数据准确可靠 (tcp协议机制 里面的功能 )
 3. 面向字节流程
UDP(User Datagram Protocol)用户数据报协议,是不可靠的无连接的协议。
 在数据发送前,因为不需要进行连接,所以可以进行高效率的数据传输。
* 适用情况:
 1. 发送小尺寸数据(如对DNS服务器进行IP地址查询时)
 2. 在接收到数据,给出应答较困难的网络中使用UDP。(如:无
 线网络)
 3. 适合于广播/组播式通信中。
 4. MSN/QQ/Skype等即时通讯软件的点对点文本通讯以及音视频通
 讯通常采用UDP协议
 5. 流媒体、VOD、VoIP、IPTV等网络多媒体服务中通常采用UDP
 方式进行实时数据传输
UDP特点:    //广播 
 1.不可靠 
 2.无连接 
 3.数据报  

![自开发多功能Vue组件:可定义滚动速度[回到顶部/底部]图标组件的安装与使用!](https://i-blog.csdnimg.cn/direct/541bdb7a523748a4bda4c1dc83d9b3ed.jpeg#pic_center)

















