!再弄不出来,小弟我就要被开除了!
救命啊!再弄不出来,我就要被开除了!!
实现这样的功能:
给你IP地址和它的掩码,让你判断某个IP,是否在这个网段之内。
例如:给你
58.32.0.0/17
58.32.0.0 ---》IP地址
17 ---》掩码(表示IP前面17位不变,后面15位清零)
这样:58.32.0.0/17 就表示这样一个网段:
00111010 00100000 00000000 00000000
到
00111010 00100000 01111111 11111111
这时输入一个IP,比如:58.32.0.1,要你的程序判断是否在这个网段之内。
大体就是这样子。
我写了一个, 大家帮忙看看我这有没有错误.
===========================================================================
#include <iostream>
#include <string.h>
#include <stdlib.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <arpa/inet.h>
using namespace std;
//Class analysis_char, 把 char 类型的IP地址转换成 int 类型
class analysis_char
{
public:
int int_ipaddress;//返回int类型的 ip
int int_mask;//返回int类型的 mask
char char_ipandmask[20];
char charbuffer[20];
analysis_char (char *x) { char_ipandmask = x;}
~analysis_char();
void analysis();
void init_charbuffer();
};
//analysis_char 类的成员函数,用来实现IP地址 char类型的到 int类型的转换
void analysis_char :: analysis()
{
//定义字符串缓冲区
char *pcharbuffer;
pcharbuffer = charbuffer;
//定义两个指针,同时指向char_ipandmask的首地址
char *p1, *p2;
p1 = char_ipandmask;
p2 = p1;
while (*p2 != NULL)
{
//若p2指向‘/’,输出网络地址
if (*p2 == '/ ')
{
memcpy (pcharbuffer, p1, (p2-p1));
int_ipaddress = inet_addr(pcharbuffer);
实现这样的功能:
给你IP地址和它的掩码,让你判断某个IP,是否在这个网段之内。
例如:给你
58.32.0.0/17
58.32.0.0 ---》IP地址
17 ---》掩码(表示IP前面17位不变,后面15位清零)
这样:58.32.0.0/17 就表示这样一个网段:
00111010 00100000 00000000 00000000
到
00111010 00100000 01111111 11111111
这时输入一个IP,比如:58.32.0.1,要你的程序判断是否在这个网段之内。
大体就是这样子。
我写了一个, 大家帮忙看看我这有没有错误.
===========================================================================
#include <iostream>
#include <string.h>
#include <stdlib.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <arpa/inet.h>
using namespace std;
//Class analysis_char, 把 char 类型的IP地址转换成 int 类型
class analysis_char
{
public:
int int_ipaddress;//返回int类型的 ip
int int_mask;//返回int类型的 mask
char char_ipandmask[20];
char charbuffer[20];
analysis_char (char *x) { char_ipandmask = x;}
~analysis_char();
void analysis();
void init_charbuffer();
};
//analysis_char 类的成员函数,用来实现IP地址 char类型的到 int类型的转换
void analysis_char :: analysis()
{
//定义字符串缓冲区
char *pcharbuffer;
pcharbuffer = charbuffer;
//定义两个指针,同时指向char_ipandmask的首地址
char *p1, *p2;
p1 = char_ipandmask;
p2 = p1;
while (*p2 != NULL)
{
//若p2指向‘/’,输出网络地址
if (*p2 == '/ ')
{
memcpy (pcharbuffer, p1, (p2-p1));
int_ipaddress = inet_addr(pcharbuffer);