创建连接以及监听的函数
1.socket(int domain, int type, int protocol);
功能:创建套接字文件。
**domain:**域,是用于选择网络层的协议。如(IPV4,IPV6)。
type: 数据类型,可以是流式套接字、数据报套接字。
**protocal:**协议:一般为0。
成功:待连接套接字; 失败:-1
*2.int bind(int sockfd, const struct sockaddr addr, socklen_t addrlen);
功能:用IP地址和端口号绑定一个套接字文件。
int sockfd:需要连接的套接字文件的描述符。
*const struct sockaddr addr:通用地址结构体的指针。
socklen_t addrlen:地址结构体的大小。
返回值:成功:0;失败:-1
其中:地址结构体的选择和具体的IP协议有关系的。例如选择的是IPV4,要用的是特殊地址结构体 —— IPv6地址结构体:
struct sockaddr_in{
u_short sin_family; // 地址族
u_short sin_port; // 端口
struct in_addr sin_addr; // IPV4地址
char sin_zero[8];
};
struct in_addr{
in_addr_t s_addr; // 无符号32位网络地址
};
3.int listen(int sockfd, int backlog);
功能:设置监听
sockfd:待连接套接字
backlog:最大同时接收连接请求个数
返回值:
成功:0,并将sockfd设置为监听套接字;
失败:-1
其中,能同时接收的最大连接请求个数为backlog+4
**4.int accept(int sockfd, struct sockaddr addr, socklen_t addrlen);
功能:开始监听(接受连接)。
sockfd:监听套接字
addr:通用地址结构体,用以存储对方的地址(IP+PORT)addrlen:参数addr的存储区域大小
返回值:成功:已连接套接字(非负整数);失败:-1
*5.int connect(int sockfd, const struct sockaddr addr, socklen_t addrlen);
功能:发送连接请求
sockfd:待连接套接字
addr:包含对方的地址(IP+PORT)的通用地址结构体的指针
addrlen:地址结构体大小
6.int close(int fd);
int shutdown(int fd, int how);
功能:断开某个正在连接套接字文件
fd:已连接套接字
how:断开方式。可选择:
SHUT_RD:关闭读端
SHUT_WR:关闭写端
SHUT_RDWR:同时关闭读写端
close():同时断开读端和写端