栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

Linux 网络编程常用API

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Linux 网络编程常用API

主机字节顺序 --> 网络字节顺序 端口号:
uint16_t htons(uint16_t hostshort);
IP
 uint32_t htonl(uint32_t hostlong);
网络字节顺序 --> 主机字节顺序 端口号:
uint16_t ntohs(uint16_t netshort);
IP:
uint32_t ntohl(uint32_t netlong);
IP地址转换函数 本地IP转网络字节序 字符串 --> int(大端方式存储)
int inet_pton(int af, const char *src,void *dst);
参数:
  • af:指定当前所使用的协议,AF_INET(IPV4),AF_INET6(IPV6) src:
  • IP地址(点分十进制)
  • dst:传出,网络字节序的IP地址
网络字节序转本地IP int -> 字符串
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; 
u_int16_t sin_port; 
struct in_addr sin_addr; 
};


struct in_addr {
u_int32_t s_addr; 
};
参数:
  • List item

size:dst的大小

socket创建套接字
int socket(int domain, int type, int protocol);
参数:
  • domin:指定协议,AF_INET、AF_INET6、AF_UNIX(本地)
  • type:指定传输协议:SOCK_STREAM(流式协议)、SOCK_DGRAM(报式协议)
  • protocol:传输协议的代表协议(如流式协议代表协议tcp,报式协议代表协议udp)。通常传0
bind 给socket绑定本地IP和端口
int bind(int sockfd, struct sockaddr *my_addr, socklen_t addrlen);
参数:
  • sockfd:本地socket文件描述符
  • my_addr:传入,地址结构
  • addrlen:地址结构大小
listen 监听
int listen(int s, int backlog);
参数:
  • s:本地socket文件描述符
  • backlog:设置同时与服务器连接的上线数
accept 等待并接收连接请求
int accept(int s, struct sockaddr *addr, socklen_t *addrlen);

等待客户端的连接(阻塞等待),成功则返回客户端套接字

参数:
  • s:本地socket文件描述符
  • addr:传出,与客户端建立连接的地址结构
  • addrlen:传入传出,传入addr大小,传出客户端addr实际大小
通信 read/recv 接收数据
ssize_t recv(int sockfd, void *buf, size_t len, int flags);
write/send 发送数据
int send(int s, const void *msg, size_t len, int flags);
关闭

close

connect 客户端连接服务器
int connect(int sockfd, const struct sockaddr *addr,socklen_t addrlen);
参数:
  • sockfd:本地socket文件描述符
  • addr:服务器的地址结构
  • addrlen:addr长度
select
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) 		//判断某个文件是否在集合中
epoll epoll_create 生成树根节点
int epoll_create(int size);

epoll内部是树结构,该函数生成一个根节点

参数:
  • size:节点个数
epoll_ctl
int epoll_ctl(int epfd, int op, int fd, struct epoll_event *event);

用于控制某个epoll文件描述符事件,可以注册,修改,删除

参数:
  • epfd:epoll树的根节点
  • op:对应的操作:注册:EPOLL_CTL_ADD、修改:EPOLL_CTL_MOD、删除:EPOLL_CTL_DEL
  • fd:要注册、修改、或删除的文件描述符 event:告诉内核要监听什么事件
epoll_wait
int epoll_wait(int epfd, struct epoll_event *events,int maxevents, int timeout);

委托内核检测哪些描述符要进行I/O操作,返回events中发生变化的个数

参数:
  • epfd:epoll树的根节点
  • events:传出,结构体数组地址,哪些节点要进行I/O操作
  • maxevents:events大小
  • timeout:超时时间
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/999882.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号