IPC通信与网络通信

一、进程间通讯方式IPC

是最有效的进程间通讯方式

流程:key值=>申请=>读写=>关闭=>卸载

(1)key_t ftok(const char *pathname,int proj_id);

功能:将pathname和proj_id转换为key值

参数1:路径名

参数2:工程id

返回值:

成功返回key值,失败返回-1;

(2)通过key值获得IPC对象

shmget(key_t key,size_t size,int shmflg)

参数1:唯一键值

参数2:申请的共享内存访问权限,八进制表示

如果是第一个申请,用IPC_CREAT

如果要检测是否存在,用IPC_EXCL

返回值:成功 返回共享内存id,一般用shmid表示,失败  -1;

(3)共享内存 绑定

映射对象:shmat()

void *shmat(int shmid, const void *shmaddr, int shmflg);

功能:将指定shmid对应的共享内存映射到本地内存。

参数:shmid 要映射的本地内存

shmaddr 本地可用的地址,如果不确定则用NULL,表示由系统自动分配。

shmflg  

0 ,  表示读写

SHM_RDONLY, 只读

返回值:

成功 返回映射的地址,一般等于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 表示只删除对象。

返回值:成功 0,失败 -1


      二、osi参考模型 
    1. 物理层 
      规定了物理层面的电气特性
      及相关机械特性 
      物理层面数据的传输 ---  一位一位二进制数据   //比特流 
    
    2. 数据链路层 
       规定了 传输数据的格式  //帧数据 
       //控制传输过程可靠 
    
    3. 网络层 (网际层)
       用于解决 网络 与 网络之间 数据传输  //数据包 
       
    4. 传输层 
       传输控制层,控制传输过程,保证数据完整和可靠 
    
    5. 会话层  
       处理一次会话过程 
    6. 表示层 
       规定了 传输数据的格式 和 方式  //加密 
    7. 应用层 
       就是直接获取要收发的数据    
       三、IP和端口

(1)IP
本质:32位(4进制)整型数值。<表示:点分十进制>

                一进制的范围:0~255。

组成:网络号(表示所处的网络) + 主机号(表示能容纳的主机)

分类:A类(0.x.x.x~127.x.x.x),B类(128.x.x.x~192.x.x.x),C类(192.x.x.x~223.x.x.x),D类(组播地址),E类(保留)

注:(1)主机号为0的IP地址是网络地址,主机号为255的地址是广播地址。

       (2)子网掩码(255.255.255.0):与IP地址相与,结果判断是否在同一网络下。

(2)端口号
本质:16位数值(2字节)

分类:①众所周知端口:1~1023(1~255间为众所周知端口;256~1023端口通常由UNIX系统占用)

                                        知名端口号(已经分配给标准应用服务软件)。

                                eg:http协议用到端口号80.

        ②已登记端口:1024~49151

                                  注册端口号(非标准应用服务软件可申请)。

        ③动态或私有端口:49152~65535

                                  动态分配的端口号(系统动态分配给应用程序使用)。

                                 //    50000以上端口号

四、编程

TCP/UDP:TCP协议<高可靠>特点——①面向连接   ②可靠传输(tcp协议机制里面的功能)。  //打电话

                           UDP协议<高效率>特点:①不可靠传输  ②无连接  ③数据报。   //广播

编程模型:①c/s(client server)——客户端-服务器模型;

                  ②b/s(browser server) ——浏览器-服务器模型。

UDP

socket
        int socket(int domain(通信范围) , int type , int protocol)

功能:程序向内核提出创建一个基于内存的套接字描述符。

参数:

domain:协议簇;当为AF_INET表示基于IPV4协议。

 type:SOCK_STREAM——通常指TCP;

SOCK_DGRAM——数据报套接字(通常指UDP)。           

protocol:0默认。

一种特殊的文件<专门用于网络通信

socket接口函数,提供了一个可访问操作系统网络功能的接口。

sendto
        ssize_t sendto(int sockfd) , const void *buf , size_t len , int flags , const struct sockaddr *dest_addr , socklen_t addrlen)

参数1:用于通信的socket对应的fd

参数2:发送数据所在空间

参数3:发送字节数

参数4:0,默认

参数5:目的地址

参数6:目的地址长度

返回值:成功:发送出去的字节数;失败:-1。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值