网络编程(一)
socket函数声明
1 |
|
协议族(Protocol Family)
socket函数的第一个参数
名称 | 协议族 |
---|---|
PF_INET | IPv4互联网协议族 |
PF_INET6 | IPv6互联网协议族 |
PF_LOCAL | 本地通信的UNIX协议族 |
PF_PACKET | 底层套接字的协议族 |
PF_IPX | IPX Novell协议族 |
套接字类型(Type)
socket函数的第二个参数
类型1:面向连接的套接字(SOCK_STREAM)
特点:
- 传输过程中数据不会消失。
- 按序传输数据。
- 传输的数据不存在数据边界。
类型2:面向消息的套接字(SOCK_DGRAM)
特点:
- 强调快速传输而非传输顺序。
- 传输的数据可能丢失也可能损毁。
- 传输的数据有数据边界。
- 限制每次传输的数据大小。
协议的最终选择
大多数情况下前两个参数即可创建所需的套接字,所以第三个参数可以传0。但当遇数据传输方式相同,但协议不同的情况就需要通过第三个参数制定具体协议信息。
IPv4协议族中面向连接的套接字(TCP套接字):
1 | int tcp_socket = socket(PF_INET, SOCK_STREAM, IPPROTO_TCP); |
IPv4协议族中面向消息的套接字(UDP套接字):
1 | int udp_socket = socket(PF_INET, SOCK_DGRAM, IPPROTO_UDP); |
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 sudo_Yiii博客!