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