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 周知端口:0~1024 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:流式套接字,特色是有序、可靠。有序、双工、基于连接的、以字节流为单位的。数组
可靠不是指不丢包,而是流式套接字保证只要你能接收到这个包,那么包中的数据的完整性必定是正确的。网络
双工是指双方都能收发。socket
基于连接的是指:好比大街上张3、李四进行对话,必定不会说每句话以前都叫着对方的名字。也就是说通讯双方是知道对方是谁的。tcp
字节流是指数据没有明显的界限,一端数据能够分为任意多个包发送。测试
SOCK_DGRAM:报式套接字,无连接的,固定的最大长度,不可靠的消息。spa
就像写信,没法保证你发出的信对方必定能收到,并且没法保证内容不会被篡改。若是今天发了一封信,明天又发了一封信,不能保证哪封信先到。你们都能收到这个包,可是发现不是本身的以后就会丢弃,发现是本身的包再处理,有严格的数据分界线。 132 三次握手 133 四次挥手 134 135 4.本地套接字 136 AF_UNIX 137 138 man 7 unix