說到什麼是域協定就會出現這麼個解釋:
unix域協定并不是一個實際的協定族,而是在單個主機上執行客戶/伺服器通信的一種方法,所用api與在不同主機上執行客戶/伺服器通信所使用的api相同。unix域協定可以視為ipc方法之一。
我們白話解釋下unix域協定在什麼情況下使用和怎麼使用?
unix域協定主要用在同一台機子的不同程序之間傳遞套接字。為什麼不用tcp或者udp套接字呢?一是因為快。源自berkeley的實作中,unix域套接字往往比通信兩端位于同一個主機的tcp套接字快出一倍。二是因為安全。unix套接字能提供額外的安全檢查措施。
注意:unix域協定表示協定位址的是路徑名,而不是inet域的ip位址和端口号
至于他們的程式和tcpsocket沒有什麼差別
服務端指令:

用戶端指令:
<a href="http://memorymyann.iteye.com/blog/649619">http://memorymyann.iteye.com/blog/649619</a>
<a href="http://hi.baidu.com/wangjianzhong1981/blog/item/d91d1c1073b2e409203f2e4d.html">http://hi.baidu.com/wangjianzhong1981/blog/item/d91d1c1073b2e409203f2e4d.html</a>
#include <sys/socket.h>
int socketpair(int family, int type, int protocol, int sockfd[2]);
1 socketpair建立兩個socket,并連接配接起來,隻用于unix域
2 family參數必須為af_local,protocol參數必須為0,
socketpair函數主要用在什麼地方呢?當父程序fork出一個子程序的時候,兩個程序需要使用unix套接字進行程序間通信,那麼socketpair就可以使用到了
發現說什麼還是不如寫代碼實在:
執行程式:
在nginx_process.c中你會看到這個:
這裡得到幾個資訊:
1 solaris 9 沒有af_local這個屬性,是以使用af_unix屬性來代替
2 nginx每個worker程序之間都有channel通道,通道就是使用socketpair建立的