今回は、socketのgetaddrinfoの仕組みや使い方についてまとめていく。getaddrinfoは仕様がごちゃごちゃしていて難しいけど、重要な部分さえ分かれば、あとは細々とした点をその都度調べていけば良いので、ここでは重要な点のみ絞って解説していく。getaddinfoの使い方getaddrinfoは以下のような引数を用意するが、正直引数の使い方がいまいち掴みにくい。ここでは、引数を1つ1つ丁寧にみていく。*nodeにはサーバー側のhostnameを入れる。localhostとかexample.comなどを入れれば良い。*serviceにはポート番号を入れる。addrinfoを格納する働きがある。第4引数はgetaddrinfoの結果を受け取るための引数と言える。getaddrinfoでアドレスを取得する時に、「IPv4形式のアドレスのみ欲しい」という風に取得したいアドレスや通信方法を絞りたい場合がある。*hintsを使って指定する事で、自分が欲しいアドレスの種類を取得できる。addrinfo構造体について上記の説明でaddrinfo構造体が出てきたが、addrinfoは以下のように定義されている。};たくさんのメンバ変数があるが、上記の構造体は大きく分けて以下の2つに分けれる。};例えば、第3引数のhintsを以下の様に定義すると、ソケット通信はSOCK_STREAM形式でかつ、IPv4形式のIPアドレスのみを取得できる。*ai_next;のところ。addrinfoはリスト構造になっている。「サーバーのアドレスは1つに決まっているだろ」と思うかもしれないが、同じアドレスでもポート番号が異なることもあるし、アドレス形式がIPv4かIPv6かでも違うし、通信形式がTCPかUDPとか色々あるので、リスト構造として提供されている。以下は、getaddrinfoの具体例を書いていく。第3引数のhints。AF6_INETの2つを定義できる。