点分十进制IP和网络字节序IP互转
#include <iostream>// 点分十进制IP转网络字节序IP
void ip_str2uint_1(const char* pIP, unsigned int& uiIP)
{unsigned int uiTmp[4] = { 0 };sscanf(pIP, "%u.%u.%u.%u", &uiTmp[3], &uiTmp[2], &uiTmp[1], &uiTmp[0]);uiIP = ((uiTmp[0] << 24) | (uiTmp[1] << 16) | (uiTmp[2] << 8) | (uiTmp[3]));
}
// 网络字节序IP转点分十进制IP
void ip_uint2str_1(unsigned int uiIP, char szIP[16])
{sprintf(szIP, "%u.%u.%u.%u", uiIP & 0xFF, (uiIP >> 8) & 0xFF,(uiIP >> 16) & 0xFF, (uiIP >> 24) & 0xFF);
}// 点分十进制IP转网络字节序IP
void ip_str2uint_2(const char* pIP, unsigned int& uiIP)
{unsigned int uiTmp[4] = { 0 };sscanf(pIP, "%u.%u.%u.%u", &uiTmp[0], &uiTmp[1], &uiTmp[2], &uiTmp[3]);unsigned char *pTmp = (unsigned char*)&uiIP;for (int i = 0; i < 4; i++){pTmp[i] = (unsigned char)uiTmp[i];}
}
// 网络字节序IP转点分十进制IP
void ip_uint2str_2(unsigned int uiIP, char szIP[16])
{unsigned char *pTmp = (unsigned char*)&uiIP;sprintf(szIP, "%u.%u.%u.%u", pTmp[0], pTmp[1], pTmp[2], pTmp[3]);
}int main()
{char szIP[] = "192.168.0.110";printf("src ip: %s\n", szIP);unsigned int uiIP = 0;ip_str2uint_1(szIP, uiIP);printf("uint ip: %u\n", uiIP);char szStrIp[16] = { 0 };ip_uint2str_1(uiIP, szStrIp);printf("str ip: %s\n", szStrIp);puts("");printf("src ip: %s\n", szIP);uiIP = 0;ip_str2uint_2(szIP, uiIP);printf("uint ip: %u\n", uiIP);memset(szStrIp, 0, sizeof(szStrIp));ip_uint2str_2(uiIP, szStrIp);printf("str ip: %s\n", szStrIp);getchar();return 0;
}
点分十进制IP和网络字节序IP互转相关推荐
- TCP/IP,网络字节序与本地转换,Linux提供的转换函数htonl,htons等,sock_addr的数据结构与内容
TCP/IP,网络字节序与本地转换,Linux提供的转换函数htonl,htons等,sock_addr的数据结构与内容 一.网络字节序存储方式: 小端存储:高位存放高地址,0x12345678的小段 ...
- 本地字节序与网络字节序的相互转换(IP地址、端口号)
一般数据在内存中是按照字节存储的,存储的方式分为大端和小端.在不知道对方主机的存储方式的情况下,我们不知道是否需要转换数据的存储方式.因此,TCP/IP协议规定:发送到网络的数据流应采用大端字节序! ...
- 计算机网络——网络字节序(大端字节序(Big Endian)\小端字节序(Little Endian))
网络字节序 网络字节序 1.网络字节序 (Network Byte Order)和本机转换 2.字节序转换函数 网络字节序 1.网络字节序 (Network Byte Order)和本机转换 1.大端 ...
- 本地字节序和网络字节序的转换
1.背景 "端口号"或者"点分十进制的IP"必须先转化为"网络字节序",才能在网络环境中传输. TCP/IP 规定,网络数据流采用大端字节序 ...
- IP地址本地字节序与网络字节序的转换函数
参考该文 IP地址本地字节序的转换函数有以下几种: 1.uint32_t htonl(uint32_t hostlong); //一般不用来转换ip地址 这个函数是int转int型,而我们习惯用的i ...
- 数据包头分析---网络字节序与主机字节序
udp头部数据结构 struct udphdr { __be16 source; //16位源端口号 __be16 dest; //16位目的端口号 __be16 len; //指udp首 ...
- 套接字编程--1(UDP协议编程,端口号,传输层协议,网络字节序)
传输层的协议: ip地址: 在网络中唯一标识一台主机 IPV4:uint32_t DHCP NAT IPV6 : uint8_t addr[16] -向前并不兼容IPV4 每一条数据都必须包含源地址和 ...
- java 网络字节序转主机字节序_Linux下查看网络连接
排查系统故障的时候,我们通常会需要查看某一进程是否监听了某一特定端口或者系统中所有监听端口列表等,这时候就需要用到系统提供的某些命令或文件了,下面总结了一些常用的获取系统网络连接的命令. 0x01 n ...
- 网络基础1--计算机网络背景-局广城网范围,还有其他各种网,交换机路由器概念,ip地址,mac端口了解,网络协议,五层模型,传输中数据封装和分用,网络字节序,主机字节序如何判断。
** 计算机网络背景 ** 网络发展史:一个网络由路由器星形发散 局域网 1.指覆盖范围在1000米以内的网络 2.计算机的数量较多,通过交换机和路由器连在一起,也被称为服务器. 城域网: 1.指覆盖 ...
- 计算机网络 | 网络基础 :网络协议,协议分层,数据封装与分用,地址管理,字节序
目录 网络协议 网络协议的概念 网络协议的组成 协议分层 OSI七层模型 TCP/IP五层模型(四层模型) 数据封装与分用 封装 分用 地址管理 IP地址与端口 MAC地址 网络字节序与主机字节序 网 ...
最新文章
- Anaconda :利用Anaconda Prompt (Anaconda3)建立、设计不同python版本及对应库函数环境之详细攻略
- 启明云端分享|直接用ESP32-S2和ESP32-C3驱动1.54寸串口屏,有哪些区别呢,他们的亮点又有哪些呢
- 【Linux】Linux中目录结构说明
- recv send 阻塞和非阻塞
- c 语言差错编码实验结果,C语言程序设计实验报告(四).doc11111111111111111.doc
- python 数组维度_python – 非常基本的Numpy数组维度可视化
- windows下安装nodejs多版本管理工具nvm-windows
- js中采用词法作用域
- matlab生成点的坐标,根据点的发展坐标,将点的轨迹画出来
- 博客园8月份第3周51Aspx源码发布详情
- 驾考一点通维语版_驾校一点通维语版2019下载_驾校一点通维语版下载 v7.6.1 - 87G手游网...
- Network 之五 TCP/IP 协议族、工作流程、(TCP、IP、MAC、VLAN)常用协议格式详解
- uni-app 对接企业微信登录
- php——三篇夯实根基第三篇
- 单纤双向BIDI光模块常识
- oracle vm win10,virtualbox win10系统下载-oracle vm virtualbox windows 10 64 bitv6.1.14 最新版 - 极光下载站...
- sql 节假日判断(春节、中秋、国庆、周末等)
- Tello 无人机 python 编程
- Unity-- Gfx.WaitForPresentOnGfxThread占用CPU过高导致帧率低
- manjaro 安装的艰辛历程,常用软件安装以及踩坑