zoukankan      html  css  js  c++  java
  • ipc

      1     进程间通信
      2 
      3 本地
      4     有亲缘关系的进程
      5     管道:
      6         特点:
      7             必须要凑齐读写双方
      8         命名管道(没有亲缘关系的进程也可以进程通信)
      9             man 7 fifo    
     10             mkfifo(3);
     11         匿名管道
     12             man 7 pipe
     13             pipe(2);    
     14 
     15     可以用于没有亲缘关系的进程
     16     sysV IPC(XSI)
     17     
     18     ipcs
     19 
     20     第一步
     21         获取同一个key值    ftok();
     22     第二步
     23         通过同一个key值得到同一个实例 xxxget();
     24     第三步
     25         进行通信xxxop();
     26     第四步
     27         销毁实例 xxxctl();
     28 
     29     消息队列    
     30     共享内存
     31     信号量数组
     32         
     33 mmap(2);
     34 
     35 网络
     36     ip地址
     37         点分十进制----》整型
     38         inet_pton();
     39 
     40     端口
     41         标识唯一进程
     42         周知端口:01024
     43         用户定义:1024 44 
     45     七层网络模型
     46     物理层 数据链路层 网络层 传输层 会话层 表示层 应用层
     47 
     48     四层网络模型(tcp/ip)    
     49     链路层    网络层    传输层    应用层
     50     
     51 跨主机传输面临的问题:
     52     1.数据类型字节个数差别
     53     <stdint.h>
     54         int32_t
     55         int64_t
     56     2.字节序
     57         大端存储
     58         小端存储    
     59         本地字节序---》网络字节数
     60                 htons();
     61                 htonl();
     62         网络----》本地
     63                 ntohs();
     64                 ntohl();
     65     3.结构体对齐
     66         struct {
     67 
     68         }__attribute__((packed));        
     69 
     70 ipv4地址的划分
     71     ip地址=网络号+主机号
     72     A        1byte+3byte    
     73             0开头
     74             0.0.0.0 ~ 127.255.255.255
     75             0.0.0.0---->任意地址
     76             127.0.0.1--->回环测试地址
     77         子网掩码
     78             255.0.0.0
     79     B        2byte+2byte    
     80             10开头
     81             128~192
     82         子网掩码
     83             255.255.0.0
     84     C        3byte+1byte    
     85             110开头
     86             192~223
     87         子网掩码
     88             255.255.255.0
     89     D        组播地址
     90             1110
     91             224~239    
     92     E        保留
     93 
     94     
     95 man 7 socket
     96 man 7 ip
     97 man 7 tcp
     98 man 7 udp
     99 man 7 unix
    100 
    101 主动端
    102     先发包的一端
    103 
    104 被动端
    105     先收包的一端
    106 
    107 1.socket
    108     抽象层
    109 
    110 2.报式套接字
    111     端对端 无连接,不可靠
    112     主动端                    被动端
    113     socket()                socket()
    114     //bind()可省            bind()
    115     sendto();/recvfrom()        recvfrom()/sendto();
    116     close();                close();
    117 
    118 广播:
    119     setsockopt();-->使能广播选项
    120 组播/多播:        
    121 
    122 3.流式套接字
    123     点对点    创建连接,可靠
    124     被动端                    主动端        
    125     socket();                socket();
    126     bind();                    
    127     listen();                connect();
    128     accept();    
    129     recv();/read();            send();/write();
    130     close();                close();
    131

    SOCK_STREAM:流式套接字,特点是有序、可靠。有序、双工、基于链接的、以字节流为单位的。

    可靠不是指不丢包,而是流式套接字保证只要你能接收到这个包,那么包中的数据的完整性一定是正确的。

    双工是指双方都能收发。

    基于链接的是指:比如大街上张三、李四进行对话,一定不会说每句话之前都叫着对方的名字。也就是说通信双方是知道对方是谁的。

    字节流是指数据没有明显的界限,一端数据可以分为任意多个包发送。

    SOCK_DGRAM:报式套接字,无链接的,固定的最大长度,不可靠的消息。

    就像写信,无法保证你发出的信对方一定能收到,而且无法保证内容不会被篡改。如果今天发了一封信,明天又发了一封信,不能保证哪封信先到。大家都能收到这个包,但是发现不是自己的之后就会丢弃,发现是自己的包再处理,有严格的数据分界线。
    132 三次握手
    133 四次挥手
    134 
    135 4.本地套接字
    136     AF_UNIX
    137 
    138     man 7 unix    
    有时候,不小心知道了一些事,才发现自己所在乎的事是那么可笑。
  • 相关阅读:
    C语言memmove()函数: 复制内存内容(可以重叠的内存块)
    #pragma pack(n)
    c++中sizeof的理解
    c/c++gdb下和发布版本下输出地址不同
    LeetCode 141. Linked List Cycle
    LeetCode 143. Reorder List
    TCP简介(一)
    通过cat方式生成yum源
    手动添加ceph的mds
    Linux 配置nfs
  • 原文地址:https://www.cnblogs.com/axjlxy/p/6724395.html
Copyright © 2011-2022 走看看