Linux基礎入門--進程間通信--socket

1.本地進程間通信

socketpair可以實現本機進程間通信的機制,類似於無名管道(pipe),但其可以實現雙向通信,且通信方式屬於socket網絡通信範疇,其函數聲明如下:
extern int socketpair(int domain,int type,int protocol,int fds[2])
第1個參數domain用來指明此socket對象所使用的地址簇或協議簇,AF_UNIX實現本機數據流傳輸
第2個參數type用來指定數據流方式TCP/UDP
第3個參數protocol用來指定協議IPv4或IPv6
第4個參數指定一個本地數組成員(類似於創建管道總的pipe函數的參數)

2.實現兩端互相發送/接受數據

服務器端:
(1)調用socket函數,建立socket對象,指定通信協議爲AF_UNIX
(2)調用bind函數,將創建的socket對象與socket類型(包括服務器地址)的文件綁定
(3)調用listen函數,是socket對象處於監聽狀態,並設置監聽隊列大小
(4)等待客戶端發出請求後,服務器端監聽到該請求,accept函數接受請求,返回新文件描述符,從而建立連接
(5)服務器調用read函數接受數據(處於阻塞狀態,等待客戶端發送數據),接收到數據後,輸出接受到的數據
(6)調用write函數發送數據到客戶端
(7)通信完成後,調用close函數關閉socket對象
服務器代碼

客戶端:
(1)調用socket函數,建立socket對象,指定相同的通信協議
(2)調用connect函數,向服務器發起連接請求
(3)得到服務端允許後,首先調用write函數向服務器端發送消息
(4)調用read函數接受數據
(5)通信完成後,調用close函數關閉socket對象
客戶端代碼

3.通信流程圖

通信流程圖
TCP三次握手
溫馨提示:
以上文章描述如有不清晰之處,歡迎在評論區評論,如有時間,會第一時間回覆,謝謝!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章