apue 第十六章 套接字

来源:互联网 发布:单片机工程师工资 编辑:程序博客网 时间:2024/05/04 08:01

int socket(int domain,int type, int protocal)

返回套接字的文件描述符

domain是套接字的通信域,每个域都有不同的地址格式 

AF_INET AF_INET6 AF_UNIX AF_UPSEC  

AF address family 地址族

type是套接字类型 SOCK_DGRAM 数据报

SOCK_STREAM 字节流

protocol可以指定为0,表示为给定的域和套接字类型选择默认协议

int shutdown(int sockfd,int how)

how:SHUT_RD 关闭读端,SHUT_WR 关闭写端 SHUT_RDWR


getaddrinfo(const char * restrict host,const char *restrict service,const struct addrinfo *restrict hint,struct addrinfo **restrict res);

提供主机名或者服务名,转换成地址

host是主机名,service是服务名

res是一个函数返回的一个addrinfo链表

hint是过滤地址的模板,用于过滤res中的信息



bind(int sockfd,const struct sockaddr *addr,socklen_t len);//服务器端绑定套接字文件描述符和地址

connect(int sockfd,const struct sockaddr *addr,socklen_t len);//客户端将sockfd连接至地址addr

如果connect失败,返回-1,这里可能导致sockfd的状态变成未定义,一次可移植的程序在connect失败后要重新建立套接字

listen(int scokfd,int backlog)//服务器获得请求

accept(int sockfd,struct sockaddr *restrict addr,socklen_t *restrict len)//服务器接收连接请求,并建立连接


sendto(int sockfd,const void *buf,size_t nbytes,int flags,const struct sockaddr *destaddr,socklen_t destlen)

recvfrom(int sockfd,void *restrict buf,size_t len,int flags,struct sockaddr *addr,socklen_t alen);

无连接的发送与接收

sendto:

destaddr是发送目标的地址

接收端调用recvfrom接收,返回时addr中会保存数据来源的地址,那么如果再次返回数据,就可以调用sento将addr做destaddr

0 0
原创粉丝点击