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客户端地址结构,采用隐式绑定