unix本地套接字

2021-10-09 17:59:20 字數 1690 閱讀 9674

socket同樣可以用於本地通訊

建立套接字時使用本地協議pf_unix(或pf_local)。

分為流式套接字和使用者資料報套接字

和其他程序間通訊方式相比使用方便、效率更高

常用於前後臺程序通訊

struct sockaddr_un //  

;填充位址結構

struct sockaddr_un myaddr;

bzero

(&myaddr,

sizeof

(myaddr));

myaddr.sun_family = pf_unix;

strcpy

(myaddr.sun_path, 「mysocket」)

;

建立unix流式套接字(socket(af_unix))------>指定本地的位址資訊(struct sockaddr_un)---->繫結本地的位址資訊

---------->監聽套接字------>鏈結客戶端請求(資訊通道開啟)------->接收/傳送資訊

建立unix流式套接字(socket(af_unix))------>指定伺服器的位址資訊(struct sockaddr_un)------>請求鏈結伺服器

---------->傳送/接收資訊

注意:

1.使用乙個套接字通訊

2.繫結之前把建立的套接字檔案關閉掉(remove(

)) 否則導致繫結失敗

伺服器:

建立套接字 socket()

填充伺服器本地資訊結構體 sockaddr_un

將套接字與伺服器本地資訊結構體繫結 bind()

將套接字設定為被動監聽狀態 listen()

阻塞等待客戶端的連線請求 accept()

進行通訊 recv()

/send()

客戶端:

建立套接字 socket()

填充伺服器本地資訊結構體 sockaddr_un

傳送客戶端的連線請求 connect()

進行通訊 send()

/recv

()

伺服器:

建立unix域資料報套接字----->指定本地的位址資訊---->繫結本地的位址資訊--->接收/傳送資訊

客戶端:

建立unix域資料報套接字---->指定伺服器的位址資訊---->指定本地的位址資訊---->繫結本地的位址資訊(要接收資料的話)

------->傳送/接受資訊

伺服器:

建立套接字 socket()

填充伺服器本地資訊結構體 sockaddr_un

將套接字與伺服器本地資訊結構體繫結 bind()

進行通訊 recvfrom()

/sendto()

客戶端:

建立套接字 socket()

填充伺服器本地資訊結構體 sockaddr_un

填充客戶端本地資訊結構體 sockaddr_un

將套接字與客戶端本地資訊結構體繫結 bind

() 如果不繫結,則接收不到伺服器傳送的資料

進行通訊 sendto()

/recvfrom

()

本地套接字

sockaddr un paramter sun family af unix char path 108 server.sock server 建立本地套接字檔案 int lfd socket af local sock stream,0 af local本地套接字 如果套接字檔案存在,刪除套接字...

本地套接字Domain Socket

unix domain socket是全雙工的,api介面語義豐富,相比其它ipc機制有明顯的優越性,目前已成為使用最廣泛的ipc機制,比如x window伺服器和gui程式之間就是通過unix domain socket通訊的。使用unix domain socket的過程和網路socket十分相...

Unix套接字位址結構

include ipv4套接字位址結構 struct in addr posix只關注sin family,sin port,sin addr,所有網路套接字地質結構都至少16位元組 struct sockaddr in include 通用套接字位址結構 struct sockaddr inclu...