一、套接字创建函数int socket()
int socket(int domain, int type, int protocol);
/*
domain:套接字中使用的协议族信息(Protocol Family)。
type:套接字数据传输类型信息。
protocol:计算机间通信中使用的协议信息。
*/
二、协议族信息
对应int socket()函数的domain参数。此协议族信息在头文件<sys/socket.h>中声明。
名称 | 协议族 |
---|---|
PF_INET | IPv4互联网协议族 |
PF_INET6 | IPv6互联网协议族 |
PF_LOCAL | 本地通信的UNIX协议族 |
PF_PACKET | 底层套接字的协议族 |
PF_IPX | IPX Novell协议族 |
套接字中实际采用的最终协议信息是通过socket()函数的第三个参数传递的,在指定的协议族范围内,通过第一个参数决定第三个参数。
三、套接字类型
对应socket()函数第二个参数type。
名称 | 类型 | 特点 |
SOCK_STREAM | TCP套接字 | 面向连接的套接字,可靠的、有序的,基于字节的数据传输方式的套接字 |
SOCK_DGRAM | UDP套接字 | 面向消息的套接字,不可靠的、无序的、以数据高速传输为目的的套接字 |
四、计算机间协议信息
对应socket()函数第三个参数protocol。一般可默认填0,计算机会自动识别协议信息。
名称 | 类型 |
IPPROTO_UDP | UDP传输协议 |
IPPROTO_TCP | TCP传输协议 |
该参数由socket()函数前两个参数决定,满足参数PF_INET和参数SOCK_DGRAM的协议只有IPPROTO_UDP,这种套接字即为UDP通信套接字。
满足参数PF_INET和参数SOCK_STREAM的协议只有IPPROTO_TCP,这种套接字即为TCP通信套接字。