2016/01/14

[linux]AF_INETかPF_INETか、それが問題だ

ちょいとsocketを使おうとした。
悩んだのは、socket()の第1引数が、AF_INETなのかPF_INETなのか、だ。

AF_INET派が多かったものの、「値は同じだけど、socket()はPF_INET、bind()やconnect()などはAF_INETがよいだろう」という意見も強く見られた。
PF_は「Platform Family」で、AF_は「Address Family」だから、プロトコルファミリーを指定するsocket()はPF_INETが意味として正しい、というわけだ。

後者の方がそれっぽいので納得したのだが、JM Projectも一応見てみた。
Man page of SOCKET
あれ・・・AF_になってる。
更新日は2015年2月1日だから、比較的新しい。
Xubuntu 14.04の「man socket」も見てみたが、やはりAF_だ。

こちらはBSD(manのミラーサイト?)で、2009年1月5日。
Manpage for socket - man.cx manual pages
こちらは、PF_だ。

FreeBSDも同じだ。というか、これも2009年1月5日だから、同じ内容なのか。
socket

私の中では、Solaris、Linux、BSD、みたいな区分けになっているので、Solarisで検索。
こちらは、Oracleのページだ。2002年6月10日。
https://docs.oracle.com/cd/E19253-01/816-5170/socket-3xnet/index.html
AF_になっている。

 

ということで、私はsocket()の引数をこうしよう。

  • Linux、Cygwin、SolarisのときはAF_
  • BSD、FreeBSDのときはPF_

みんな、人に流されず自分で決めるんだ!
(といいつつ、私も人が書いた内容を検索して決めたんだけどね。)

0 件のコメント:

コメントを投稿

コメントありがとうございます。
スパムかもしれない、と私が思ったら、
申し訳ないですが勝手に削除することもあります。

注: コメントを投稿できるのは、このブログのメンバーだけです。