IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 系统运维 -> Linux 网络编程常用API -> 正文阅读

[系统运维]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; /* 地址族: AF_INET */
u_int16_t sin_port; /* 按网络字节次序的端口 */
struct in_addr sin_addr; /* internet地址 */
};

/* Internet地址. */
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:超时时间
  系统运维 最新文章
配置小型公司网络WLAN基本业务(AC通过三层
如何在交付运维过程中建立风险底线意识,提
快速传输大文件,怎么通过网络传大文件给对
从游戏服务端角度分析移动同步(状态同步)
MySQL使用MyCat实现分库分表
如何用DWDM射频光纤技术实现200公里外的站点
国内顺畅下载k8s.gcr.io的镜像
自动化测试appium
ctfshow ssrf
Linux操作系统学习之实用指令(Centos7/8均
上一篇文章      下一篇文章      查看所有文章
加:2022-07-03 11:10:24  更:2022-07-03 11:13:27 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年5日历 -2024/5/18 22:49:02-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码