一、TCP服务器调用顺序: 调用socket函数创建套接字;声明并初始化地址信息结构体变量;调用bind函数向套接字分配地址;调用listen函数进入等待连接请求状态,只有调用了listen函数后
一、TCP服务器调用顺序:
调用socket函数创建套接字;声明并初始化地址信息结构体变量;调用bind函数向套接字分配地址;调用listen函数进入等待连接请求状态,只有调用了listen函数后客户端才能调用connet函数,调用listen函数时,若请求队列为空,listen函数不会返回。
#include <sys/socket.h>
// 成功返回0,失败返回-1 int listen(int sock, int backlog); sock : 希望进入等待连接请求状态的套接字文件描述符 backlog : 请求等待队列的长度
调用listen函数以后,若有连接请求,则应调用accept函数按序受理。
#include <sys/socket.h>
// 成功返回创建的套接字文件描述符,失败返回-1 int accept(int sock, struct sockaddr * addr, socklen_t * addrlen); sock : 服务器套接字的文件描述符 addr : 保存发起连接请求的客户端地址信息的变量地址值 addrlen : 保存参数addr结构体的长度
二、TCP客户端调用顺序:
#include <sys/socket.h> int sonnect(int sock, struct sockaddr * aservaddr, socklen_t addrlen); sock : 客户端套接字文件描述符 servaddr : 服务器端地址 addrlen : 服务器端地址长度
客户端的IP地址和端口在调用connect函数的时候自动分配,无需调用标记的bind函数进行分配。
三、TCP服务器端和客户端函数调用关系: