字节序转换IP地址转换接口
文章目录
- 1.字节序转换接口:
- 2.字符串点分十进制IP地址转换为网络字节序整数IP地址接口:
- 3.将网络IP地址转换为字符串点分十进制IP地址:
- 常用命令
数据经过网络传输就需要考虑字节序的问题,经常常需要针对网络字节序(大端)和主机字节序进行转换。
1.字节序转换接口:
//man hton 可查看
#include <arpa/inet.h>
h:host n: netuint32_t htonl(uint32_t hostlong); 32位(4字节)主机字节序到网络字节序的转换。
uint16_t htons(uint16_t hostshort); 16位主机字节序到网络字节序的转换
uint32_t ntohl(uint32_t netlong); 32网络字节序到位主机字节序转换
uint16_t ntohs(uint16_t netshort); 16位网络字节序到位主机字节序转换 //上面这些接口里面能判断主机字节序,若与要转换的相同则不操作返回。
2.字符串点分十进制IP地址转换为网络字节序整数IP地址接口:
eg:192.168.2.2-转为十进制数字地址0xcoa80202
#include <sys/socket.h> //socket接口头文件
#include <netinet/in.h> //地址结构,协议类型头文件
#include <arpa/inet.h> //字节序转换接口头文件in_addr_t inet_addr(const char *cp);只能转换IPV4的ip地址
eg: addr.sin_addr.s_addr = inet_addr("172.17.0.3");//int inet_pton(int af, const char *src, void *dst); IPV4,ipv6都能转换。
3.将网络IP地址转换为字符串点分十进制IP地址:
char *inet_ntoa(struct in_addr in); 只能转换IPV4的ip地址
//const char *inet_ntop(int af, const void *src, char *dst, socklen_t size);IPV4,ipv6都能转换。
IPV4,ipv6都能转换。
Eg:
bool Accept(TcpSocket *sock, std::string *ip = NULL,uint16_t *port = NULL){//int accept(监听描述符,获取客户端地址,长度)struct sockaddr_in addr;socklen_t len = sizeof(struct sockaddr_in);int newfd = accept(_sockfd,(sockaddr*)&addr,&len);if (newfd < 0) {perror("accept error");return false;}sock->_sockfd = newfd;if (ip != NULL) {*ip = inet_ntoa(addr.sin_addr);}if (port != NULL) {*port = ntohs(addr.sin_port);}return true;}
常用命令
netstat -anptu 可查看当前主机上网络状态信息
命令: netstat -a 查看所有网络信息-n 不显示服务名称,显示地址信息 -P 显示服务进程-t 过滤,只包含TCP-u 过滤,只包含udp
Ifconfig 可查看地址信息
云服务器–>内网地址:
字节序转换IP地址转换接口相关推荐
- 1-网络字节序和ip地址
1. 字节序 之前我们在学习内存的时候可知,内存存储数据也是有大端存储和小端存储的,对于网络数据流同样有大端小端之分,那么为什么要定义网络字节序呢? 原因是让不同cpu架构的计算机进行网络通信 ...
- 网络字节序和IP地址详解
文章目录 一.网络字节序 1.大端模式和小端模式 2.判断大端模式和小端模式 3.大端模式和小端模式相互转换 二.字节序转换函数 三.IP地址详解 1.IP地址的概念 2.IP地址的两种表示方法:整数 ...
- 【Linux网络编程学习】预备知识(网络字节序、IP地址转换函数、sockaddr数据结构)
此为牛客Linux C++课程和黑马Linux系统编程笔记. 1. 网络字节序 我们已经知道,内存中的多字节数据相对于内存地址有大端和小端之分. 磁盘文件中的多字节数据相对于文件中的偏移地址也有大端小 ...
- OSI七层、TCP/IP五层、UDP、TCP的socket编程(服务端及客户端)、字节序转换、多进程以及多线程服务端的实现
1.网络以覆盖范围划分:局域网/城域网/广域网 互联网/因特网 以太网/令牌环网--组网方式 2.在网络中必须能够为一表示每一台主机,才能实现点到点的精确通信 IP地址: ...
- 【Socket网络编程】3.字节序转换函数htons、htonl ,地址转换函数inet_ntoa、inet_ntop、inet_pton、inet_addr
字节序转换函数htons.htonl 地址转换函数inet_ntoa.inet_ntop.inet_pton.inet_addr 1.字节序转换函数 #include <arpa/inet.h& ...
- Socket编程之地址之间转换、字节序转换
目录 char *inet_ntoa(struct in_addr in); int inet_aton(const char *cp, struct in_addr *inp); in_addr_t ...
- 网络通信之 字节序转换原理与网络字节序、大端和小端模式
一.在进行网络通信时是否需要进行字节序转换? 相同字节序的平台在进行网络通信时可以不进行字节序转换,但是跨平台进行网络数据通信时必须进行字节序转换. 原因如下:网络协议规定接收到得第一个字节是高字节, ...
- Linux网络编程小知识(字节序、IP格式、函数、子网掩码、DNS域名解析代码实现)
参考:网络编程前的一些小知识–Linux笔记 作者:一只青木呀 发布时间: 2021-04-12 23:19:10 网址:https://blog.csdn.net/weixin_45309916/a ...
- 关于高位字节与低位字节简洁明了的说明,以及高低字节序转换函数
一般一个16位(双字节)的数据,比如 FF1A (16进制) 那么高位字节就是FF,低位是1A 如果是32位的数据,比如 3F68415B 高位字(不是字节)是3F68 低位字是415B 右边是低 ...
- 网络通信时字节序转换原理与网络字节序、大端和小端模式 .
引言:在进行网络通信时是否需要进行字节序转换? 相同字节序的平台在进行网络通信时可以不进行字节序转换,但是跨平台进行网络数据通信时必须进行字节序转换.原因如下:网络协议规定接收到得第一个字节是高字节, ...
最新文章
- linux 环境下,yum 安装redis
- CEAC网络构建试题
- Eclipse修改console输出最大行数及(IOConsole Updater)
- cent 8.0 安装tomcat 9.0_Linux服务器:安装tomcat并部署war应用
- es6 ie不兼容 函数_ES6:什么是块级作用域?
- oracle-SYSTEM表空间的备份与恢复
- 第八章 基本脚本编译
- callablestatement存储过程
- 判断一颗二叉树是否是二叉排序树
- 阿里云的RDS 查看binlog日志的方法
- 转载 Android入门学习_代码常用布局
- 终结者2显示天网服务器,《终结者2:审判日》天网觉醒秘测开服公告
- 第一部分 第二章 答案合集(part 1)1006-1023
- spring源码:idea搭建源码环境
- linux过滤端口抓包_Linux下抓包命令tcpdump
- tps协议和onvif协议_摄像头ONVIF协议,到底啥是ONVIF,又是啥意思?
- 斩获GitHub 2000+ Star,阿里云开源的Alink机器学习平台如何跑赢双11数据“博弈”?...
- 计算机笔记本硬盘,笔记本取证之--笔记本硬盘拆卸
- 远程协同办公 远程协同办公的7点建议和方案 居家办公也能高效率
- Openstack之Keystone组件解析
热门文章
- 安卓手机管理_时间管理大师手机版下载-时间管理大师app下载v1.0.0 安卓最新版...
- linux看门狗机制
- 主成分分析法的SPSS操作
- html5font标签菜鸟教程,菜鸟教程
- idea打包时控制台中文乱码
- Spring Boot pom文件详解
- Shiro总结和常见面试题
- python画二元一次函数图像_Python实现的拟合二元一次函数功能示例【基于scipy模块】...
- 如何在手机上安装linux系统并可视化界面
- 车险赔付率分析报告_车险经营情况分析报告模板.ppt