1、int socket(int domain, int type, int protocol);函数解析
功能:创建socket,也就是创建一个socket描述符
参数:
domain :使用哪个协议族,一般情况下设为AF_INET(IPv4)
type: 服务类型,主要有SOCK_STREAM流服务(TCP协议使用),SOCK_DGRAM数据报服务(UDP协议使用)
protocol:一般设为0
返回值:返回一个socket的描述符,如果失败返回-1
2、int bind(int sockfd, const struct sockaddr *addr, socklen_t addrlen); 函数解析
功能:把产生的socket套接字和本地的sock地址绑定起来。
参数:
sockfd:socket函数产生的socket描述符
addr:本地的socket地址,下面会仔细讲解该结构体。
addrlen:addr结构体的长度,一般strlen(addr);
返回值:失败返回-1
struct sockaddr_in
{
short int sin_family; /* 地址族 */
unsigned short int sin_port; /* 端口号 */
struct in_addr sin_addr; /* IP地址 */
unsigned char sin_zero[8]; /* 填充0 以保持与struct sockaddr同样大小 */
};
3、int listen(int sockfd, int backlog);函数解析
功能: 当socket创建之后还不能立即被客户端连接,必须设置一个监听队列来等待客户端的连接
参数:
sockfd 创建的的socket套接字
backlog: 设置内核监听的最大长度,一般设为1就可以了
返回值:成功返回0,失败返回-1
4、 int accept(int sockfd, struct sockaddr *addr, socklen_t *addrlen);函数解析
功能: 接收客户端的连接,当没有客户端来接连的时候就阻塞
参数:
sockfd 创建的的socket套接字
addr: 用来获取连接的客户端的socket地址
addrlen : 获得addr的长度
返回值:成功返回0,失败返回-1
5、int connect(int sockfd, const struct sockaddr *addr, socklen_t addrlen); 函数解析
功能: 向服务器端获取连接
参数:
sockfd 创建的的socket套接字
addr: 要连接的服务器端主机的socket信息
addrlen : 获得addr的长度
返回值:成功返回0,失败返回-1
6