AF_INET和PF_INET的细微不同
来源:互联网 发布:国家注册审核员 知乎 编辑:程序博客网 时间:2024/04/30 11:00
AF_INET和PF_INET的细微不同
在写网络程序的时候,建立TCP socket:
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.例如: z = socket(PF_LOCAL, SOCK_STREAM, 0); adr_unix.sin_family = AF_LOCAL;
另外:
AF表示ADDRESS FAMILY 地址族
PF 表示PROTOCL FAMILY 协议族
但这两个宏定义是一样的
所以使用哪个都没有关系
Winsock2.h中
#define AF_INET 0
#define PF_INET AF_INET
所以在windows中AF_INET与PF_INET完全一样
而在Unix/Linux系统中,在不同的版本中这两者有微小差别
对于BSD,是AF,对于POSIX是PF
在函数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.例如: z = socket(PF_LOCAL, SOCK_STREAM, 0); adr_unix.sin_family = AF_LOCAL;
/usr/include/bits/socket.h /* Protocol families. */#define PF_UNSPEC 0 /* Unspecified. */#define PF_LOCAL 1 /* Local to host (pipes and file-domain). */#define PF_UNIX PF_LOCAL /* POSIX name for PF_LOCAL. */#define PF_FILE PF_LOCAL /* Another non-standard name for PF_LOCAL. */#define PF_INET 2 /* IP protocol family. */#define PF_AX25 3 /* Amateur Radio AX.25. */#define PF_IPX 4 /* Novell Internet Protocol. */#define PF_APPLETALK 5 /* Appletalk DDP. */#define PF_NETROM 6 /* Amateur radio NetROM. */#define PF_BRIDGE 7 /* Multiprotocol bridge. */#define PF_ATMPVC 8 /* ATM PVCs. */#define PF_X25 9 /* Reserved for X.25 project. */#define PF_INET6 10 /* IP version 6. */#define PF_ROSE 11 /* Amateur Radio X.25 PLP. */#define PF_DECnet 12 /* Reserved for DECnet project. */#define PF_NETBEUI 13 /* Reserved for 802.2LLC project. */#define PF_SECURITY 14 /* Security callback pseudo AF. */#define PF_KEY 15 /* PF_KEY key management API. */#define PF_NETLINK 16#define PF_ROUTE PF_NETLINK /* Alias to emulate 4.4BSD. */#define PF_PACKET 17 /* Packet family. */#define PF_ASH 18 /* Ash. */#define PF_ECONET 19 /* Acorn Econet. */#define PF_ATMSVC 20 /* ATM SVCs. */#define PF_RDS 21 /* RDS sockets. */#define PF_SNA 22 /* Linux SNA Project */#define PF_IRDA 23 /* IRDA sockets. */#define PF_PPPOX 24 /* PPPoX sockets. */#define PF_WANPIPE 25 /* Wanpipe API sockets. */#define PF_LLC 26 /* Linux LLC. */#define PF_CAN 29 /* Controller Area Network. */#define PF_TIPC 30 /* TIPC sockets. */#define PF_BLUETOOTH 31 /* Bluetooth sockets. */#define PF_IUCV 32 /* IUCV sockets. */#define PF_RXRPC 33 /* RxRPC sockets. */#define PF_ISDN 34 /* mISDN sockets. */#define PF_PHONET 35 /* Phonet sockets. */#define PF_IEEE802154 36 /* IEEE 802.15.4 sockets. */#define PF_CAIF 37 /* CAIF sockets. */#define PF_ALG 38 /* Algorithm sockets. */#define PF_MAX 39 /* For now.. *//* * Protocol families, same as address families for now. PF=AF */ /* Address families. */#define AF_UNSPEC PF_UNSPEC#define AF_LOCAL PF_LOCAL#define AF_UNIX PF_UNIX#define AF_FILE PF_FILE#define AF_INET PF_INET#define AF_AX25 PF_AX25#define AF_IPX PF_IPX#define AF_APPLETALK PF_APPLETALK#define AF_NETROM PF_NETROM#define AF_BRIDGE PF_BRIDGE#define AF_ATMPVC PF_ATMPVC#define AF_X25 PF_X25#define AF_INET6 PF_INET6#define AF_ROSE PF_ROSE#define AF_DECnet PF_DECnet#define AF_NETBEUI PF_NETBEUI#define AF_SECURITY PF_SECURITY#define AF_KEY PF_KEY#define AF_NETLINK PF_NETLINK#define AF_ROUTE PF_ROUTE#define AF_PACKET PF_PACKET#define AF_ASH PF_ASH#define AF_ECONET PF_ECONET#define AF_ATMSVC PF_ATMSVC#define AF_RDS PF_RDS#define AF_SNA PF_SNA#define AF_IRDA PF_IRDA#define AF_PPPOX PF_PPPOX#define AF_WANPIPE PF_WANPIPE#define AF_LLC PF_LLC#define AF_CAN PF_CAN#define AF_TIPC PF_TIPC#define AF_BLUETOOTH PF_BLUETOOTH#define AF_IUCV PF_IUCV#define AF_RXRPC PF_RXRPC#define AF_ISDN PF_ISDN#define AF_PHONET PF_PHONET#define AF_IEEE802154 PF_IEEE802154#define AF_CAIF PF_CAIF#define AF_ALG PF_ALG#define AF_MAX PF_MAX
本文地址:http://www.procedurego.com/article/304313.html
阅读全文
0 0
- AF_INET和PF_INET的细微不同
- AF_INET和PF_INET的细微不同
- AF_INET和PF_INET的细微不同
- AF_INET和PF_INET的细微不同
- AF_INET和PF_INET的细微不同
- AF_INET和PF_INET的细微不同
- AF_INET和PF_INET的细微不同
- AF_INET和PF_INET的细微不同
- AF_INET和PF_INET的细微不同
- AF_INET和PF_INET的细微不同
- AF_INET和PF_INET的细微不同
- AF_INET 和 PF_INET的细微区别
- PF_INET 和 AF_INET的说明!
- AF_INET和PF_INET的区别
- AF_INET和PF_INET的区别
- PF_INET 和 AF_INET的区别
- PF_INET 和 AF_INET的区别
- 关于PF_INET和AF_INET的区别
- Android探索之旅(第十八篇)Android中能不断提高你代码质量的工具
- 面向对象纲要
- c/c++中运行外部程序
- linux netstat网络情况
- Android推送遇到的问题--app关闭后,点击通知后点击通知后app未初始化的问题
- AF_INET和PF_INET的细微不同
- JAVA基本的正则表达式
- 算法提高 排队打水问题
- Swift3 UIImage、Data、PNG图片之间的转换
- ice windows
- 【bzoj1941】[Sdoi2010]Hide and Seek
- 'release' is unavailable: not available in automatic reference counting modeAutomatic
- android 之RadioGroup 的换行
- SSL For Free 申请免费https SSL 凭证