天天看點

Linux IO模型漫談(3) -- 阻塞式IO實作1 sockaddr_in 套接字位址結構2 socket函數(建立套接字)3 htons函數伺服器端:用戶端:

在了解代碼前有幾個函數先說一下:

1

2

3

4

5

6

7

8

9

10

<code>struct</code> <code>sockaddr_in {</code>

<code>    </code><code>uint8_t         sin_len;        </code><code>//長度字段,這個sockaddr_in結構的長度,一般不用設定和檢查它</code>

<code>    </code><code>sa_family_t     sin_family;     </code><code>//協定族,tcp,udp等協定族就設定為af_inet </code>

<code>    </code><code>in_port_t       sin_port;       </code><code>//端口号</code>

<code>    </code> 

<code>    </code><code>struct</code> <code>in_addr  sin_addr;       </code><code>//32位的ipv4位址</code>

<code>    </code><code>char</code>            <code>sin_zero(8);    </code><code>//未使用</code>

<code>}</code>

posix規範隻需要指定其中的sin_family, sin_port, sin_addr三個字段

這個結構非常重要!!

參數解釋:

family:協定族,和sockaddr_in中的sin_family一個意思

type: 指明套接字類型

protocol:通常指派為0

這個函數是所有套接字程式設計的入口,建立套接字。

這個函數是将本地位元組序列轉換為網絡位元組序列,簡單來說,就是将一個數的高低位互換

(如12 34 -&gt; 3412)

這個函數在給servaddr_in指派的時候會用到

下面這個程式包含了基本的io操作,說明以注釋的形式加在代碼中;

server的流程基本是這樣的:

Linux IO模型漫談(3) -- 阻塞式IO實作1 sockaddr_in 套接字位址結構2 socket函數(建立套接字)3 htons函數伺服器端:用戶端:

用戶端的流程如下;

Linux IO模型漫談(3) -- 阻塞式IO實作1 sockaddr_in 套接字位址結構2 socket函數(建立套接字)3 htons函數伺服器端:用戶端:

繼續閱讀