日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Socket编程(C语言实现)—— AF_INET(典型的TCP/IP四层模型的通信过程),AF_UNIX(本地进程间通信)

發布時間:2025/10/17 编程问答 21 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Socket编程(C语言实现)—— AF_INET(典型的TCP/IP四层模型的通信过程),AF_UNIX(本地进程间通信) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

1、AF_INET域與Socket通信

? ? ?其是典型的TCP/IP四層模型的通信過程。

(1)接收方與發送方依賴IP和port來標識,即,將本地socket綁定到對應的IP端口上;
(2)發送數據時指定對方的IP與端口,經過Internet可以根據此端口最終找到接收方;
(3)接受數據時,可以從數據包內獲取到發送方的IP和端口號。

(1) 發送方通過系統調用send()將原始數據發送到操作系統內核緩沖區中。
(2) 內核緩沖區從上到下依次經過TCP層、IP層、鏈路層的編碼,分別添加對應的頭部信息,經過網卡將一個數據包發送到網絡中。
(3) 經過網絡路由到接收方的網卡。
(4) 網卡通過系統中斷將數據包通知到接收方的操作系統,再沿著發送方編碼的反方向進行解碼,即依次經過鏈路層、IP層、TCP層去除頭部、檢查校驗等;
(5)?最終將原始數據上報到接收方進程。

2、AF_UNIX域與Socket通信過程

? ?其是典型的IPC(本地進程間通信),依賴于路徑名標識接收方和發送方。

(1)發送數據時,指定接收方綁定的路徑名;
(2)操作系統可以直接根據該路徑名找到對應的接收方;
(3)并將數據直接拷貝到接受方的內核緩沖區內,并上報給接收方進程進行通信;
(4)接收方可以從收到的數據包中獲取到發送方的路徑名;
(5)并通過此路徑名向其發送數據。

3、進程間通信流式傳輸與報式傳輸

?SOCK_STREAM(流式傳輸)SOCK_DGRAM(報式傳輸)
AF_INET(TCP/IP通信)
(明確知道對端地址)

流式傳輸使用函數:

send(),recv();

read(),write();

流式傳輸類似于管道:
不區分邊界。

報式傳輸使用函數:

sendto(),redvfrom();

報式傳輸區分邊界:

分包收取數據。

AF_UNIX(本地進程間通信)

(不知道對端地址)

(1)AF_INET(TCP/IP通信協議),SOCKET_STREAM與SOCKET_DGRAM函數的使用方式:

Socket編程(C語言實現)——TCP協議(網絡間通信AF_INET)的流式(SOCK_STREAM)+報式(SOCK_DGRAM)傳輸【多線程+循環監聽】

(2)AF_UNIX(IPC本地進程間通信),SOCKET_STREAM與SOCKET_DGRAM函數的使用方式:

Socket編程(C語言實現)——UDP協議(進程間通信AF_UNIX)的流式(SOCK_STREAM)+報式(SOCK_DGRAM)傳輸【循環監聽】

(3)為什么說流式傳輸類似于管道,不區分邊界?

Socket編程(C語言實現)—— 為什么流式傳輸類似于管道?不區分邊界?

參考文章:https://blog.csdn.net/sandware/article/details/40923491?

總結

以上是生活随笔為你收集整理的Socket编程(C语言实现)—— AF_INET(典型的TCP/IP四层模型的通信过程),AF_UNIX(本地进程间通信)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。