* INET_ATON(expr)
给出一个作为字符串的网络地址的"点地址"(如127.0.0.1)表示,返回一个代表该地址数值的整数。地址可以是4或8比特地址。
mysql> SELECT INET_ATON('209.207.224.40');
-> 3520061480
产生的数字总是按照网络字节顺序。如上面的例子,数字按照 209×2563 + 207×2562 + 224×256 + 40 进行计算。
INET_ATON() 也能理解短格式 IP 地址:
mysql> SELECT INET_ATON('127.0.0.1'), INET_ATON('127.1');
-> 2130706433, 2130706433
注释: 在存储由INET_ATON() 产生的值时,推荐你使用 INT UNSIGNED 列。假如你使用 (带符号) INT列, 则相应的第一个八位组大于127的IP 地址值会被截至 2147483647 (即, INET_ATON('127.255.255.255') 所返回的值)。请参见11.2节,“数值类型”。
* INET_NTOA(expr)
给定一个数字网络地址 (4 或 8 比特),返回作为字符串的该地址的电地址表示。
*
mysql> SELECT INET_NTOA(3520061480);
-> '209.207.224.40'
以上文章转载,现在的项目就是从数据库里取到一个IP数字,转化成实际的IP
在网上找了很久没有现成的,后来还是自己写了个方法,也很简单。
Author:QQ174554431
// TestBoostLibrary.cpp : Defines the entry point for the console application.
//
#include "stdafx.h"
#include <string>
#include <vector>
#include <iostream>
#include <boost/cstdint.hpp>
#include <boost/lexical_cast.hpp>
#include <sstream>
void ConvertNumberIpAddress(boost::uint32_t &in_ipNumberAddress,std::string &out_validIpAddress)
{
if(in_ipNumberAddress<0||in_ipNumberAddress>4294967295)
{
out_validIpAddress = "0.0.0.0"; //invalid IP Address
}
else
{
boost::uint32_t divisor = 256;
boost::uint32_t ip_section1 = 0;
boost::uint32_t ip_section2 = 0;
boost::uint32_t ip_section3 = 0;
boost::uint32_t ip_section4 = 0;
std::string ip_section_str1;
std::string ip_section_str2;
std::string ip_section_str3;
std::string ip_section_str4;
std::string dot = ".";
ip_section1 = in_ipNumberAddress%divisor;
in_ipNumberAddress = in_ipNumberAddress/divisor;
ip_section2 = in_ipNumberAddress%divisor;
in_ipNumberAddress = in_ipNumberAddress/divisor;
ip_section3 = in_ipNumberAddress%divisor;
in_ipNumberAddress = in_ipNumberAddress/divisor;
ip_section4 = in_ipNumberAddress%divisor;
ip_section_str1 = boost::lexical_cast <std::string> (ip_section1);
ip_section_str2 = boost::lexical_cast <std::string> (ip_section2);
ip_section_str3 = boost::lexical_cast <std::string> (ip_section3);
ip_section_str4 = boost::lexical_cast <std::string> (ip_section4);
out_validIpAddress = ip_section_str4+dot+ip_section_str3+dot+ip_section_str2+dot+ip_section_str1;
}
}
int _tmain(int argc, _TCHAR* argv[])
{
boost::uint32_t subnet = 3520061480;
std::string ipAddress;
ConvertNumberIpAddress(subnet,ipAddress);
std::cout<<ipAddress<<std::endl;
return 0;
}
运行结果:209.207.224.40
分享到:
相关推荐
它接受一个域名字符串作为参数,返回一个`struct hostent`结构体,其中包含了与该域名关联的所有IP地址。由于IP地址可能有多个(如A记录轮询),我们需要遍历`struct hostent`的`h_addr_list`成员来获取所有IP地址。...
Boost C++ 库中包含了许多用于字符串处理的功能,如`boost::algorithm`库,它提供了一系列高效的算法来操作字符串;`boost::spirit`库则提供了一个强大的词法分析框架,可用于解析复杂的文本格式。 #### 六、多线程...
- **解析16进制字符串**:如果接收到的是16进制字符串,我们需要将其转换回原始字节。这通常涉及解析每个两位的16进制数字,并用`std::stoul`或类似方法转换为整数,然后再组合成字节序列。 - **数据校验**:确保...
4. 转换二进制IP地址到字符串格式,使用`inet_ntop`函数。 在实际编程中,为了提高代码的可移植性,可以考虑使用跨平台的库,如Boost.Asio或Poco,它们提供了统一的接口来处理不同操作系统下的网络编程问题。在本例...
4. **提取并转换IP地址**: - `pHost->h_addr_list[0]`用于获取第一个IP地址的原始形式。 - 使用`memcpy()`函数将原始IP地址复制到`in_addr`结构中。 - `inet_ntoa()`函数将`in_addr`结构中的IP地址转换为字符串...
- `inet_ntoa()`函数用于将网络字节序的IP地址转换为人类可读的字符串形式。 2. 获取主机名: - 使用`gethostname()`函数可以获取当前系统的主机名。这个函数不需要任何参数,但需要提供一个缓冲区来存储返回的...
在`gethostbyname`的结果中,IP地址通常以二进制形式存在,需要使用`inet_ntoa`将其转换为点分十进制的字符串形式。对于`getaddrinfo`,结果中已经包含了`struct sockaddr_in`或`struct sockaddr_in6`,可以直接...
C++ boost::asio编程-域名解析 在网络通信中通常我们并不直接使用IP地址,而是使用域名。这时候我们就需要用reslover类来...#include <boost>//使用字符串转换功能 using namespace std; using namespace boost::asi
Boost C++库提供了丰富的字符串处理功能,如`boost::algorithm`库中的字符串算法。这些算法涵盖了查找、替换、分割等多种常见操作,极大地简化了字符串处理的难度。 #### 六、多线程 随着多核处理器的普及,多线程...
- **DNS解析**:了解如何通过DNS将域名转换为IP地址,以便进行网络通信。 2. **网络库**: - **libcurl**:C++中最常用的网络库之一,支持HTTP、HTTPS等多种协议,可以方便地发送GET、POST等请求。 - **Poco库**...
例如,JSON是一种常见的数据交换格式,可以使用如nlohmann/json这样的库将C++对象转换为JSON字符串,再在网络上传输。 此外,聊天室程序还需要考虑用户身份验证、消息的存储与检索、消息广播等高级功能。用户认证...
在C++中,处理网络相关的任务,如IP地址的处理,通常涉及到系统调用或者使用库函数,如Boost.Asio或原生的socket API。下面我们将详细探讨与这个项目相关的C++知识点。 首先,C++并不是一种天生就支持网络编程的...
4. **Boost.DateTime**:这个库提供了日期和时间的处理能力,包括日期计算、时间间隔以及与字符串的转换等功能。在1.48.0版本中,开发者可以方便地处理各种时间相关的任务。 5. **Boost.Regex**:Boost.Regex库提供...
3. **SMTP命令构造与解析**:在C++代码中,需要构造并发送符合SMTP规范的字符串命令,同时解析服务器返回的响应码和信息,以确保邮件传输的正确性。 4. **邮件格式**:SMTP传输的邮件内容遵循MIME(Multipurpose ...
这个DLL的实现可能涉及到的C++技术有网络编程、字符串处理、内存管理以及跨语言互操作。开发者在使用这个库时,需要根据自己的需求,将具体的WEB请求地址和参数传递给DLL,然后获取服务器的响应。理解这些知识点对于...
在C++中,有多种库可以处理JSON,如nlohmann/json,它可以将JSON字符串转换为C++对象,反之亦然。 在服务器端,收到客户端的JSON数据后,需要解析并执行对应的函数。这可能涉及到解析JSON对象,获取函数名和参数,...
此外,C++标准库中的string和stringstream等工具对于字符串操作和格式化非常有用。 解析后的消息需要进行路由,即决定它们应该被发送到哪里或由哪个组件处理。这可能涉及到设计和实现一种消息调度策略,例如基于...
2. **IP地址处理**:在C++中,IP地址通常表示为字符串,如"192.168.1.1"。我们可以使用`inet_aton()`或`inet_pton()`函数将字符串形式的IP转换为二进制表示,以便在网络编程中使用。反之,`inet_ntoa()`或`inet_ntop...
结构体的成员可以是基本类型,如`int`或`char`,用于存储协议中的数值和字符串。这样,我们读取文件后,可以直接将数据转换为结构体实例,便于操作和处理。 ```cpp struct HighwayRecord { int id; double ...