uint16_t htons(uint16_t hostshort);
uint32_t htonl(uint32_t hostlong);
uint16_t ntohs(uint16_t netshort);
uint32_t ntohl(uint32_t netlong);
int inet_pton(int af, const char *src,void *dst);
const char *inet_ntop(int af, const void *src, char *dst, socklen_t size);
//sockaddr_in(IPV4)结构
struct sockaddr_in {
sa_family_t sin_family; /* 地址族: AF_INET */
u_int16_t sin_port; /* 按网络字节次序的端口 */
struct in_addr sin_addr; /* internet地址 */
};
/* Internet地址. */
struct in_addr {
u_int32_t s_addr; /* 按网络字节次序的地址 */
};
size:dst的大小
int socket(int domain, int type, int protocol);
int bind(int sockfd, struct sockaddr *my_addr, socklen_t addrlen);
int listen(int s, int backlog);
int accept(int s, struct sockaddr *addr, socklen_t *addrlen);
等待客户端的连接(阻塞等待),成功则返回客户端套接字
ssize_t recv(int sockfd, void *buf, size_t len, int flags);
int send(int s, const void *msg, size_t len, int flags);
close
int connect(int sockfd, const struct sockaddr *addr,socklen_t addrlen);
int select(int nfds, fd_set* readfds,fd_set* writefds,fd_set* exceptfds, struct timeval* timeout)
nfds:要检测的文件描述中最大的fd + 1也可以传1024
readfds:读集合
writefds:写集合
exceptfds:异常集合
timeout:阻塞时间
void FD_ZERO(fd_set* set) //全部清空
void FD_CLR(int fd,fd_set* set) //从集合中删除某一项
void FD_SET(int fd,fd_set* set) //将某个文件描述符添加到集合
void FD_ISSET(int fd,fd_set* set) //判断某个文件是否在集合中
int epoll_create(int size);
epoll内部是树结构,该函数生成一个根节点
int epoll_ctl(int epfd, int op, int fd, struct epoll_event *event);
用于控制某个epoll文件描述符事件,可以注册,修改,删除
int epoll_wait(int epfd, struct epoll_event *events,int maxevents, int timeout);
委托内核检测哪些描述符要进行I/O操作,返回events中发生变化的个数