核心中套接字struct socket、struct sock、struct inet_sock、struct tcp_sock、struct raw_sock、struct udp_sock、struct inet_connection_sock、struct inet_timewait_sock和struct tcp_timewait_sock的關係是:
*struct socket這個是bsd層的socket,應用程式會用過系統呼叫首先建立該型別套接字,它和具體協議無關。
*struct inet_sock是inet協議族使用的socket結構,可以看成位於inet層,是struct sock的乙個擴充套件。它的第乙個屬性就是struct sock結構。
*struct sock是與具體傳輸層協議相關的套接字,所有核心的操作都基於這個套接字。
*struct tcp_sock是tcp協議的套接字表示,它是對struct inet_connection_sock的擴充套件,其第乙個屬性就是struct inet_connection_sock inet_conn。
*struct raw_sock是原始型別的套接字表示,icmp協議就使用這種套接字,其是對struct sock的擴充套件。
*struct udp_sock是udp協議套接字表示,其是對struct inet_sock套接字的擴充套件。
*struct inet_connetction_sock是所有面向連線協議的套接字,是對struct inet_sock套接字擴充套件。
後面兩個是用於控制超時的套接字
參考
typeof關鍵字在核心中的運用
ansi c定義了sizeof關鍵字,用來獲取乙個變數和資料型別在記憶體中所佔的儲存位元組數。gnu 擴充套件了乙個關鍵字,typeof用來獲取乙個變數或表示式的型別。int i typeof i j 20 typeof int a int f typeof f k 在上面的 中,因為變數i的型別為...
監聽套接字 連線套接字的區別
摘要 對於伺服器程式設計中最重要的一步等待並接受客戶的連線,那麼這一步在程式設計中如何完成,accept函式就是完成這一步的。它從核心中取出已經建立的客戶連線,然後把這個已經建立的連線返回給使用者程式,此時使用者程式就可以與自己的客戶進行點到點的通訊了。accept函式等待並接受客戶請求 inclu...
Dart的套接字與web套接字
首先在專案中建三個dart檔案,如下圖 main.dart中的 如下 import dart io import dart convert main listarguments socket 1.dart中的 如下 import dart io main listarguments socket 2...