【转】PF_INET 和 AF_INET 的区别
轉自:PF_INET 和 AF_INET 的區別 - 52php - 博客園
在寫網絡程序的時候,建立TCP socket:
| 1 | sock = socket(PF_INET, SOCK_STREAM, 0); |
然后再綁定本地地址或連接遠程地址時需要初始化sockaddr_in結構,其中指定address family時一般設置問AF_INET,即使用IP。
相關的頭文件定義:
AF = Address Family
PF = Protocol Family
AF_INET = PF_INET
所以在Windows中,AF_INET與PF_INET完全一樣,而在Unix/Linux系統中,在不同的版本中這兩者有微小差別。對于BSD,是AF,對于POSIX是PF。
理論上,建立socket時是指定協議,應該用PF_XXXX,設置地址時應該用AF_XXXX。當然AF_INET和PF_INET的值是相同的,混用也不會有太大的問題。
在函數socketpair與socket的domain參數中有
AF_UNIX, AF_LOCAL, AF_INET, PF_UNIX, PF_LOCAL, PF_INET
這幾個參數有? AF_UNIX = AF_LOCAL, PF_UNIX = PF_LOCAL, AF_LOCAL = PF_LOCAL, AF_INET = PF_INET
建議:對于socketpair與socket的domain參數,使用PF_LOCAL系列,而在初始化套接口地址結構時,則使用AF_LOCAL。
例如:
| 1 2 | sockfd = socket(PF_LOCAL, SOCK_STREAM, 0); adr_unix.sin_family = AF_LOCAL; |
總結
以上是生活随笔為你收集整理的【转】PF_INET 和 AF_INET 的区别的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: LSGO软件技术团队内部技术交流【201
- 下一篇: 库克哪懂苹果?罗永浩:要想办法收购苹果