1. ホーム
  2. c

[解決済み] データ型 - socklen_t, sa_family_t

2022-02-02 04:24:58

質問

を使用して簡単なソケットWebサーバを構築しています。 sys/socket.h ライブラリで socklen_tsa_family_t というデータ型があり、その実際の目的が何なのか、少し混乱しています。

定義

  • sa_family_t - 符号なし整数型です。
  • socklen_t - 少なくとも 32 ビットの長さを持つ符号なし不透明整数型。

今、私は、その <sys/socket> libは3つの構造体( sockaddr , msghdr , cmsghdr ) があり、これらのデータ型を宣言するメンバが含まれています。

  • sa_family_t sa_family address family
  • socklen_t msg_namelen size of address
  • socklen_t msg_controllen ancillary data buffer len
  • socklen_t cmsg_len data byte count, including the cmsghdr

しかし、なぜ新しいデータ型を作るのでしょうか? unsigned int というデータ型があります。

解決方法は?

これらのフィールドに特定の型を宣言することで、これらのフィールドを以下のような特定の表現から切り離すことができます。 unsigned int .

アーキテクチャが異なれば、これらのフィールドに異なるサイズを定義することも自由です。 int は、あるマシンでは