IT评测·应用市场-qidao123.com技术社区

标题: 学习嵌入式第二十九天 [打印本页]

作者: 老婆出轨    时间: 2024-8-22 05:42
标题: 学习嵌入式第二十九天
ipc进程间通讯方式

PC,即进程间通讯(Inter-Process Communication),是操纵体系中不同进程之间互换数据的一种机制。以下是一些常见的IPC方式:
 共享内存


共享内存是一种高效的进程间通讯(IPC)机制,它允许两个或多个进程共享一个给定的存储区。以下是共享内存在IPC中实现的基本步骤:


//step1 产生key值 
ftok //

#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值
          失败 -1     
//step2 通过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
    返回值:
            成功 返回共享内存id,一样平常用shmid体现
            失败  -1;
            share memory attach
//step3 共享内存 绑定 
shmat 
    映射对象:shmat()
    void *shmat(int shmid, const void *shmaddr, int shmflg);
    功能:将指定shmid对应的共享内存映射到当地内存。
    参数:shmid 要映射的当地内存
          shmaddr 当地可用的地址,如果不确定则用NULL,体现
                  由体系自动分配。
          shmflg  
          0         ,  体现读写
          SHM_RDONLY, 只读
    返回值:
           成功 返回映射的地址,一样平常等于shmaddr
            失败 (void*)-1        
//step4 解除绑定(映射)
    打消映射:shmdt
    int shmdt(const void *shmaddr);
    功能:将当地内存与共享内存断开映射关系。
    参数:shmaddr 要断开的映射地址。
    返回值:成功  0
            失败  -1;
          
//step4 销毁IPC对象 
        删除对象:shmctl
    int shmctl(int shmid, int cmd, struct shmid_ds *buf); //ctl = control 
    功能:
         修改共享内存属性,也可以删除指定的共享内存对象。
    参数:shmid 要删除的共享内存对象
          cmd 
               IPC_RMID 删除对象的宏
          buff  NULL 体现只删除对象。
    返回值:成功 0
            失败 -1
网络
 



网络是由多个设备通过通讯链路相互连接形成的体系,这些设备可以是盘算机、服务器、路由器、互换机等。网络的重要功能是实现数据的传输和共享,允许用户访问远程资源、进行通讯和协作。
网络可以根据其覆盖范围分为几种范例:
简朴来说 网络就是实现不同主机间通讯的方法。
实现网络通讯
1.物理层面 有一个 信息通路  
2.软件层面(逻辑层面) 也需要 一个通路 
osi七层模子 

 实际应用到的是 tcp/ip 模子 

 每个层次中,都有本身的一套规范 --- 协议 


IP地址(Internet Protocol Address)是互联网协议地址,它是分配给网络中每个设备的唯一标识符,用于在互联网上进行通讯。IP地址使得数据能够在网络中的不同设备之间传输。
IP地址的构成如下:
 网络编程

UDP(User Datagram Protocol)用户数据报协议,是不可靠的无连接的协议。
在数据发送前,因为不需要进行连接,所以可以进行高服从的数据传输。
* 实用环境:
1. 发送小尺寸数据(如对DNS服务器进行IP地址查询时)
2. 在接收到数据,给出应答较困难的网络中使用UDP。(如:无
线网络)
3. 得当于广播/组播式通讯中。
4. MSN/QQ/Skype等即时通讯软件的点对点文本通讯以及音视频通
讯通常接纳UDP协议
5. 流媒体、VOD、VoIP、IPTV等网络多媒体服务中通常接纳UDP
方式进行实时数据传输
UDP特点:    //广播 
1.不可靠 
2.无连接 
3.数据报  
 

编程模子 
     c/s    client server    客户端,服务器模子     --- 专用客户端 
     b/s    browser server   浏览器,服务器模子     --- 通用的客户端 
     p2p    peer to peer     点对点传输 
     
     
基于UDP c/s通讯模子:
//client ---客户端 --- 脚色  --- 主动的脚色  
socket    //1.一种特别的文件 --- 专门用于网络通讯(不同主机间的进程)
          //2.socket 编程接口  --- socket 函数 
          //提供了一个可以访问 操纵体系 网络功能的接口 
          
sendto //发数据 
//server --- 服务器端 --脚色 --- 被动的脚色  
socket 
recvfrom    //接收数据 
socket 
 int socket(int domain, int type, int protocol);
#include <sys/types.h>          /* See NOTES */
#include <sys/socket.h>
int socket(int domain, int type, int protocol);
功能:步调向内核提出创建一个基于内存的套接字描述符    
参数:   
      //domain --域 (范围) ---socket 用于什么范围的通讯
      //           ipv4 
     //               ipv6 
      domain  地址族,PF_INET == AF_INET ==>互联网步调
                      PF_UNIX == AF_UNIX ==>单机步调
      type    套接字范例:
                SOCK_STREAM  流式套接字 ===》TCP   
              SOCK_DGRAM   用户数据报套接字===>UDP
              //SOCK_RAW     原始套接字  ===》IP
      protocol 协议 ==》0 体现自动适应应用层协议。
返回值:
        成功 返回申请的套接字文件描述符 
        失败  -1
        
      
    ssize_t sendto(    int sockfd,  //用于通讯的socket对应的fd
                  const void *buf,  //体现要发送的数据所在的一块空间 
                       size_t len,  //体现发送的字节数 
                        int flags,  //0  --- 默认  
 const struct sockaddr *dest_addr,  //体现 要发送到的 地址 (网络地址 ip+端口号 ) 
                socklen_t addrlen   //体现dest_addr 这个参数的长度 
                );
      
      返回值:
          成功  发送出去的字节的数 
          失败  -1 
 

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。




欢迎光临 IT评测·应用市场-qidao123.com技术社区 (https://dis.qidao123.com/) Powered by Discuz! X3.4