1. socket函数原型:
#include <sys/socket.h>int socket(int domain, int type, int protocol);
2. bind函数原型:
#include <sys/socket.h>int bind(int sockfd, struct sockaddr *my_addr, socklen_t addrlen);
参数:
struct sockaddr_in {sa_family_t sin_family; /* 地址族: AF_INET */u_int16_t sin_port;/* 按网络字节次序的端口 */struct in_addr sin_addr; /* internet地址 */};struct in_addr {u_int32_t s_addr; /* 按网络字节次序的地址 */};
3. listen函数原型: 设置同时与服务器连接上的上限数(同时进行3次握手的客户端数量)
#include <sys/socket.h>int listen(int s, int backlog);
参数:
backlog:内核为相应套接字排队的最大连接数
4. accept函数原型:阻塞等待客户端建立连接,成功的话,返回一个与客户端成功连接的socket文件描述符
#include <sys/socket.h>int accept(int sockfd, struct sockaddr *addr, socklen_t *addrlen);
参数:
sockfd:socket函数返回值addr:传出参数——成功与服务器建立连接的那个客户端的地址结构(IP + port)addrlen:传入传出。入:addr的大小。出:客户端addr实际大小成功:能与服务器进行数据通信的socket对应的文件描述符
5. connect函数原型:
#include <sys/socket.h>int connect(int sockfd, const struct sockaddr *addr, socklen_t addrlen);
参数:
socket函数返回值addr:传入参数——服务器地址结构addrlen:服务器的地址结构大小
注意:如果不使用bind客户端地址结构,采用隐式绑定