Linux Socket Programming by Example-第四章 确定Socket Domain
2012-06-25 13:49
453 查看
书中首先介绍了AF与PF的历史由来。
AF 表示ADDRESS FAMILY 地址族
PF 表示PROTOCL FAMILY 协议族
通常Window/Linux系统以下宏是等价的。
AF_UNIX=AF_LOCAL=PF_UNIX=PF_LOCAL=AF_LOCAL=PF_LOCAL
AF_INET=PF_INET
但在某些Unix/Linux系统可能有一些细微差别。
对于BSD系统,是AF,对于POSIX系统是PF。
为了兼容性,推荐如下使用:
对于socketpair与socket的domain参数,使用PF_LOCAL系列,
而在初始化套接口地址结构时,则使用AF_LOCAL.
例如:
int z; /* Status Code */
int sp[2]; /* Socket Pair */
struct sockaddr_un adr_unix; /* AF_LOCAL */
z = socketpair (PF_LOCAL,SOCK_STREAM,0,sp);
. . .
adr_unix.sun_family = AF_LOCAL;
接下来,重点介绍了Domain与Protocol的各种组合使用。
SOCK_STREAM: 基于网络流的I/O,对应TCP协议。
特点:
不知道什么时候读写开始/结束
底层保证数据传输的正确性(包括数据大写与发送顺序的正确性)
基于连接的Socket通信
SOCK_DGRAM:基于数据包的I/O,对应UDP协议
特点:
派发出去的包接收端不能保证派发顺序
派发出去的包可能丢失
包大小有限制
SOCK_SEQPACKET: 用于X.25
特点:
发送端的包大小被记录,接收端会按同样大小接收。
包的发送顺序在接收段保持不变。
基于连接的Socket通信
比如:发送端发送了2条消息,大小分别为25和30。
则接收端也依次收到2条消息,大小分别为25和30。
SOCK_RAW:由于基于底层协议进行编程,书中不作介绍。
常见组合:
PF_LOCAL SOCK_STREAM
PF_LOCAL SOCK_DGRAM
PF_INET SOCK_STREAM
PF_INET SOCK_DGRAM
PF_INET6 SOCK_STREAM
PF_INET6 SOCK_SEQPACKET
PF_INET6 SOCK_DGRAM
AF 表示ADDRESS FAMILY 地址族
PF 表示PROTOCL FAMILY 协议族
通常Window/Linux系统以下宏是等价的。
AF_UNIX=AF_LOCAL=PF_UNIX=PF_LOCAL=AF_LOCAL=PF_LOCAL
AF_INET=PF_INET
但在某些Unix/Linux系统可能有一些细微差别。
对于BSD系统,是AF,对于POSIX系统是PF。
为了兼容性,推荐如下使用:
对于socketpair与socket的domain参数,使用PF_LOCAL系列,
而在初始化套接口地址结构时,则使用AF_LOCAL.
例如:
int z; /* Status Code */
int sp[2]; /* Socket Pair */
struct sockaddr_un adr_unix; /* AF_LOCAL */
z = socketpair (PF_LOCAL,SOCK_STREAM,0,sp);
. . .
adr_unix.sun_family = AF_LOCAL;
接下来,重点介绍了Domain与Protocol的各种组合使用。
SOCK_STREAM: 基于网络流的I/O,对应TCP协议。
特点:
不知道什么时候读写开始/结束
底层保证数据传输的正确性(包括数据大写与发送顺序的正确性)
基于连接的Socket通信
SOCK_DGRAM:基于数据包的I/O,对应UDP协议
特点:
派发出去的包接收端不能保证派发顺序
派发出去的包可能丢失
包大小有限制
SOCK_SEQPACKET: 用于X.25
特点:
发送端的包大小被记录,接收端会按同样大小接收。
包的发送顺序在接收段保持不变。
基于连接的Socket通信
比如:发送端发送了2条消息,大小分别为25和30。
则接收端也依次收到2条消息,大小分别为25和30。
SOCK_RAW:由于基于底层协议进行编程,书中不作介绍。
常见组合:
PF_LOCAL SOCK_STREAM
PF_LOCAL SOCK_DGRAM
PF_INET SOCK_STREAM
PF_INET SOCK_DGRAM
PF_INET6 SOCK_STREAM
PF_INET6 SOCK_SEQPACKET
PF_INET6 SOCK_DGRAM
相关文章推荐
- Linux Socket Programming by Example-第二章 IP 地址域 读书笔记
- Linux Socket Programming by Example-第七章 TCP通信
- Linux Socket Programming by Example-第五章 将IP地址与Socket绑定
- Linux Socket Programming by Example-第九章 IP与域名
- Linux Socket Programming by Example-第八章 TCP通信
- Linux Socket Programming by Example-第十一章 多客户端并发处理
- Linux Socket Programming by Example-第十八章 实战
- Linux Socket Programming by Example-第六章 基于无连接的UDP通信
- Linux Socket Programming by Example-第一章读书笔记
- Linux Socket Programming by Example-第十二章 设置socket参数
- Linux Socket Programming by Example-第三章 IP地址与子网划分
- LINUX SOCKET programming by Example
- Linux Socket Programming by Example-第十章 标准I/O与Socket
- 手工解析选项参数问题《Linux Programming by Example:The Fundamentals》chapter2,exercise
- Linux Programming by Example:The Fundamentals(Notes One)
- C Socket Programming for Linux with a Server and Client Example Code
- C Socket Programming for Linux with a Server and Client Example Code
- 利用DEV-C++ 改造hpc01机上的test_multithread_socket_textsearchbyExampleDoc.cpp
- 【记录】Accelerated C++:Practical Programming by Example第2章:循环和计数
- linux c socket programming