socket相关函数
socket相关函数
socket函数
socket函数返回套接字描述符
int socket(int socket,int type,int protocol)
若成功返回非负描述符,失败返回-1.
family | 说明 |
---|---|
AF_INET | IPv4协议 |
AF_INET6 | IPv6协议 |
AF_LOCAL | Unix域协议 |
AF_ROUTE | 路由套接字 |
AF_KEY | 密钥套接字 |
type | 说明 |
---|---|
SOCK_STREAM | 字节流套接字 |
SOCK_DGRAM | 数据报套接字 |
SOCK_SEQPACKET | 有序分组套接字 |
SOCK_RAW | 原始套接字 |
protocol | 说明 |
---|---|
IPPROTO_TCP | TCP传输协议 |
IPPROTO_UDP | UDP传输协议 |
IPPROTO_SCTP | SCTP传输协议 |
connect函数
TCP客户用connect函数来建立与TCP服务器的连接.
int connect(int sockfd,const struct sockaddr *servaddr,socklen_t addrlen)
若成功返回0,失败返回-1.
bind函数
bind函数把一个本地协议地址赋予一个套接字
int bind(int sockfd,const struct sockaddr *myaddr,socklen_t addrlen)
若成功返回0,失败返回-1.
listen函数
当socket函数创建一个套接字时,它被假设为一个主动套接字,也就是说它是一个将调用connect发起连接的客户套接字,listen函数把一个未连接的套接字转换成一个被动套接字,指示内核应接受指向该套接字的连接请求.
int listen(int sockfd,int backlog)
若成功返回0,失败返回-1.
backlog为相应套接字排队的最大连接个数
accept函数
accept函数由TCP服务器调用,用于从一个已完成连接的队列队头返回下一个已完成连接.
int accept(int sockfd,struct sockaddr *cliaddr,socklen_t *addrlen)
若成功返回非负描述符,失败返回-1.
如果accept成功,那么其返回值是由内核自动生成的一个全新描述符,它的第一个参数为监听套接字描述符,返回值为已连接套接字描述符.一个服务器通常仅仅创建一个监听套接字,它在服务器的生命期内一直存在.内核为每个由服务器进程接受的客户连接创建一个已连接套接字.