导航:首页 > 编程语言 > 计算一串数据中的ip地址编程

计算一串数据中的ip地址编程

发布时间:2022-12-09 07:48:51

① 如何通过一个编程获得IP地址归属地的最简单办

有时在网站应用程序中要显示对方的IP地址与它的归属地,一般来说,有下列几种办法。
1, 采用IP地址数据库。本地查询
这个办法的优点是:查询速度最快,不依赖于外部网站。
缺点是:要编写一定的数据库查询代码,而且你的数据库如果不是很新,则某些IP的查询结果会不正确。
(有需要的可以在此留言,大虾米可以提供一个能找到的最新的IP地址库)
2,采用WebService查询。
这里有一个最好的WebService
http://www.webxml.com.cn/zh_cn/web_services_item.aspx?id=56647553443555386D2F4D3D
缺点是:要编写一定的WebService查询代码。而且查询的结果是XML形式,需要进一步的解析。
3,调用某些查询网站的代码,如http://www.ip.cn/
缺点是:它会返回相当多的无关代码,难以解析出你想要的东西。
4, 调用气动隔膜泵网站链接直接查询
比如
http://www.tianqizx.cn/ip.aspx?ip=202.105.19.49
网站会直接返回查询的结果,如“ 广东省佛山市 三水区”
不会有任何的杂信息干扰
win32 API并没有提供直接得到CPU占用率的气动隔膜泵函数,但提供GetProcessTimes()函数可以得到进程占用的CPU时间,通过和实际时间的流逝相比,可以得到某进程占用CPU的比率好了,
下面就是完整的C++代码。

// 得到当前进程的CPU占用率
class GetCPUPercentage
{
private:
CRITICAL_SECTION cs; // 供多线程同步的临界区变量
HANDLE hd; // 空闲进程的句柄
DWORD t1; // 时间戳
int percent; // 最近一次计算的CPU占用率

__int64 oldp;
__int64 FileTimeToInt64(const FILETIME& time);
int GetTime(__int64& proc); // 得到进程占用的CPU时间
public:
GetCPUPercentage();
~GetCPUPercentage();

int Get(); // 得到CPU占用率
};

GetCPUPercentage::GetCPUPercentage()
{
InitializeCriticalSection(&cs); // 初始化线程临界区变量

percent = 0; // 初始的占用率

DWORD pid = GetCurrentProcessId(); // 得到当前进程id
hd = OpenProcess(PROCESS_QUERY_INFORMATION, FALSE, pid); // 通过id得到进程的句柄
if( hd==NULL ){
return;
}

// 得到初始时刻的值
GetTime(oldp);
t1 = GetTickCount();
}

GetCPUPercentage::~GetCPUPercentage()
{
if( hd!=NULL ){
CloseHandle(hd);
}
DeleteCriticalSection(&cs);
}

// 时间格式转换
__int64 GetCPUPercentage::FileTimeToInt64(const FILETIME& time)
{
ULARGE_INTEGER tt;
tt.LowPart = time.dwLowDateTime;
tt.HighPart = time.dwHighDateTime;
return(tt.QuadPart);
}

// 得到进程占用的CPU时间
int GetCPUPercentage::GetTime(__int64& proc)
{
FILETIME create;
FILETIME exit;
FILETIME ker; // 内核占用时间
FILETIME user; // 用户占用时间
FILETIME now;
if( !GetProcessTimes(hd, &create, &exit, &ker, &user) ){
return(-1);
}

proc = (FileTimeToInt64(ker) + FileTimeToInt64(user))/10000;
return(0);
}

// 进行换算
int GetCPUPercentage::Get()
{
if( hd==NULL )
return(0);

EnterCriticalSection(&cs);
DWORD t2 = GetTickCount();
DWORD dt = t2 - t1;
if( dt>139 ){ // 毫秒数。用一个比较少的时间片作为计算单位,这个值可修改
__int64 proc;
GetTime(proc);

percent = ((proc-oldp)*100)/dt;

t1 = t2;
oldp = proc;
}
LeaveCriticalSection(&cs);
return(percent);
}

// 定义一个全局变量
GetCPUPercentage _cpu;

// 下面是用C++Bulider写的测试例子:
// --------------------------
// 在用一个时钟不停地显示当前的CPU占用率
void __fastcall TForm1::Timer1Timer(TObject *Sender)
{http://www.it168.com/
Label1->Caption = _cpu.Get();
}

//---------------------------------------------------------------------------
// 再弄个按钮
LRESULT WINAPI TestThread(LONG lParam)
{
int n = lParam;
for(int i=0 ;i<n; i++){
Form1->Label2->Caption = i;
Sleep(12);
}
return(0);
}
// 点击这个按钮会创建一些线程来把CPU整的繁忙些
void __fastcall TForm1::Button1Click(TObject *Sender)
{
int n = atoi(Edit1->Text.c_str());
DWORD dwThreadid;
CreateThread(NULL

② 怎样计算IP地址,能举一下例吗

二楼的不懂就不要乱说。
内容有点多,慢慢看。

IP地址与网络分类
(1)IP地址
不同的物理网络技术有不同的编址方式;不同物理网络中的主机,有不同的物理网络地址。网间网技术是将不同物理网络技术统一起来的高层软件技术。网间网技术采用一种全局通用的地址格式,为全网的每一网络和每一主机都分配一个网间网地址,以此屏蔽物理网络地址的差异。IP协议提供一种全网间网通用的地址格式,并在统一管理下进行地址分配,保证一个地址对应一台网间网主机(包括网关),这样物理地址的差异被IP层所屏蔽。IP层所用到的地址叫做网间网地址,又叫IP地址。它由网络号和主机号两部分组成,统一网络内的所有主机使用相同的网络号,主机号是唯一的。IP地址是一个32为的二进制数,分成4个字段,每个字段8位。

(2)三类主要的网络地址
我们知道,从LAN到WAN,不同种类网络规模相差很大,必须区别对待。因此按网络规模大小,将网络地址分为主要的三类,如下:
A类:
0 1 2 3 8 16 24
3 1 0网络号主机号
B类:
1 0网络号主机号
C类:
1 1 0网络号主机号
A类地址用于少量的(最多27个)主机数大于216的大型网,每个A类网络可容纳最多224台主机;B类地址用于主机数介于28~216之间数量不多不少的中型网,B类网络最多214个;C类地址用于每个网络只能容纳28台主机的大量小型网,C类网络最多221个。
除了以上A、B、C三个主类地址外,还有另外两类地址,如下:
D类:
1 1 1 0多目地址
E类:
1 1 1 1 0留待后用
其中多目地址(multicast address)是比广播地址稍弱的多点传送地址,用于支持多目传输技术。E类地址用于将来的扩展之用。

(3)TCP/IP规定网络地址
除了一般地标识一台主机外,还有几种具有特殊意义的特殊形式。
*广播地址
TCP/IP规定,主机号全为“1”的网络地址用于广播之用,叫做广播地址。所谓广播,指同时向网上所有主机发送报文。
*有限广播
前面提到的广播地址包含一个有效的网络号和主机号,技术上称为直接广播(directed boradcasting)地址。在网间网上的任何一点均可向其他任何网络进行直接广播,但直接广播有一个缺点,就是要知道信宿网络的网络号。
有时需要在本网络内部广播,但又不知道本网络网络号。TCP/IP规定,32比特全为“1”的网间网地址用于本网广播,该地址叫做有限广播地址(limited broadcast address)。
*“0”地址
TCP/IP协议规定,各位全为“0”的网络号被解释成“本”网络。
*回送地址
A类网络地址127是一个保留地址,用于网络软件测试以及本地机进程间通信,叫做回送地址(loopback address)。无论什么程序,一旦使用回送地址发送数据,协议软件立即返回之,不进行任何网络传输。
TCP/IP协议规定,一、含网络号127的分组不能出现在任何网络上;二、主机和网关不能为该地址广播任何寻径信息。由以上规定可以看出,主机号全“0”全“1”的地址在TCP/IP协议中有特殊含义,不能用作一台主机的有效地址。

二、子网掩码

(1)子网TCP/IP网间网技术产生于大型主流机环境中,它能发展到今天的规模是当初的设计者们始料未及的。网间网规模的迅速扩展对IP地址模式的威胁并不是它不能保证主机地址的唯一性,而是会带来两方面的负担:第一,巨大的网络地址管理开销;第二,网关寻径急剧膨胀。其中第二点尤为突出,寻径表的膨胀不仅会降低网关寻径效率(甚至可能使寻径表溢出,从而造成寻径故障),更重要的是将增加内外部路径刷新时的开销,从而加重网络负担。
因此,迫切需要寻求新的技术,以应付网间网规模增长带来的问题。仔细分析发现,网间网规模的增长在内部主要表现为网络地址的增减,因此解决问题的思路集中在:如何减少网络地址。于是IP网络地址的多重复用技术应运而生。
通过复用技术,使若干物理网络共享同一IP网络地址,无疑将减少网络地址数。
子网编址(subnet addressing)技术,又叫子网寻径(subnetrouting),英文简称subnetting,是最广泛使用的IP网络地址复用方式,目前已经标准化,并成为IP地址模式的一部分。
一般的,32位的IP地址分为两部分,即网络号和主机号,我们分别把他们叫做IP地址的“网间网部分”和“本地部分”。子网编址技术将本地部分进一步划分为“物理网络”部分和“主机”部分,如图:
网间网部分物理网络主机
|←网间网部分→|←————本地部分—————→|
其中“物理网络”用于标识同一IP网络地址下的不同物理网络,既是“子网”。

(2)子网掩码IP协议标准规定:每一个使用子网的网点都选择一个32位的位模式,若位模式中的某位置1,则对应IP地址中的某位为网络地址(包括网间网部分和物理网络号)中的一位;若位模式中的某位置0,则对应IP地址中的某位为主机地址中的一位。例如位模式:
11111111 11111111 11111111 00000000中,前三个字节全1,代表对应IP地址中最高的三个字节为网络地址;后一个字节全0,代表对应IP地址中最后的一个字节为主机地址。这种位模式叫做子网模(subnet mask)或“子网掩码”。
为了使用的方便,常常使用“点分整数表示法”来表示一个IP地址和子网掩码,例如B类地址子网掩码(11111111 11111111 11111111 00000000)为:
255.255.25.0 IP协议关于子网掩码的定义提供一种有趣的灵活性,允许子网掩码中的“0”和“1”位不连续。但是,这样的子网掩码给分配主机地址和理解寻径表都带来一定困难,并且,极少的路由器支持在子网中使用低序或无序的位,因此在实际应用中通常各网点采用连续方式的子网掩码。像255.255.255.64和255.255.255.160等一类的子网掩码不推荐使用。
(3)子网掩码与IP地址子网掩码与IP地址结合使用,可以区分出一个网络地址的网络号和主机号。
例如:有一个C类地址为:
192.9.200.13其缺省的子网掩码为:
255.255.255.0则它的网络号和主机号可按如下方法得到:
①将IP地址192.9.200.13转换为二进制11000000 00001001 11001000 00001101
②将子网掩码255.255.255.0转换为二进制11111111 11111111 11111111 00000000
③将两个二进制数逻辑与(AND)运算后得出的结果即为网络部分11000000 00001001 11001000 00001101 AND 11111111 11111111 11111111 00000000 11000000 00001001 11001000 00000000结果为192.9.200.0,即网络号为192.9.200.0。
④将子网掩码取反再与IP地址逻辑与(AND)后得到的结果即为主机部分11000000 00001001 11001000 00001101 AND 00000000 00000000 00000000 11111111 00000000 00000000 00000000 00001101结果为0.0.0.13,即主机号为13。
(4)子网掩码与IP地址子网掩码与IP地址结合使用,可以区分出一个网络地址的网络号和主机号。
例如:有一个C类地址为:
192.9.200.13 其缺省的子网掩码为:
255.255.255.0 则它的网络号和主机号可按如下方法得到:
①将IP地址192.9.200.13转换为二进制11000000 00001001 11001000 00001101
②将子网掩码255.255.255.0转换为二进制11111111 11111111 11111111 00000000
③将两个二进制数逻辑与(AND)运算后得出的结果即为网络部分11000000 00001001 11001000 00001101 AND 11111111 11111111 11111111 00000000 11000000 00001001 11001000 00000000结果为192.9.200.0,
即网络号为192.9.200.0。
④将子网掩码取反再与IP地址逻辑与(AND)后得到的结果即为主机部分11000000 00001001 11001000 00001101 AND 00000000 00000000 00000000 11111111 00000000 00000000 00000000 00001101 结果为0.0.0.13,即主机号为13。
三、子网划分与实例根据以上分析,建议按以下步骤和实例定义子网掩码。
1、将要划分的子网数目转换为2的m次方。如要分8个子网,8=23。
2、取上述要划分子网数的2的m次方的幂。如23,即m=3。
3、将上一步确定的幂m按高序占用主机地址m位后转换为十进制。如m为3 则是11100000,转换为十进制为224,即为最终确定的子网掩码。如果是C类网,则子网掩码为255.255.255.224;如果是B类网,则子网掩码为255.255.224.0;如果是C类网,则子网掩码为255.224.0.0。
在这里,子网个数与占用主机地址位数有如下等式成立:2m=n。其中,m表示占用主机地址的位数;n表示划分的子网个数。根据这些原则,将一个C类网络分成4个子网。若我们用的网络号为192.9.200,则该C类网内的主机IP地址就是192.9.200.1~192.9.200.254(因为全“0”和全“1”的主机地址有特殊含义,不作为有效的IP地址),现将网络划分为4个部分,按照以上步骤:
4=22,取22的幂,即2,则二进制为11,占用主机地址的高序位即为11000000,转换为十进制为192。这样就可确定该子网掩码为:192.9.200.192,4个子网的IP地址范围分别为:
二进制十进制
① 11000000 00001001 11001000 00000001 11000000 00001001 11001000 00111110 192.9.200.1
192.9.200.62
② 11000000 00001001 11001000 01000001 11000000 00001001 11001000 01111110 192.9.200.65
192.9.200.126
③ 11000000 00001001 11001000 10000001 11000000 00001001 11001000 10111110 192.9.200.129
192.9.200.190
④ 11000000 00001001 11001000 11000001 11000000 00001001 11001000 11111110 192.9.200.193
192.9.200.254
在此列出A、B、C三类网络子网数目与子网掩码的转换表,以供参考。

A类:

子网数目 占用位数 子网掩码 子网中主机数
2 1 255.128.0.0 8,388,606
4 2 255.192.0.0 4,194,302
8 3 255.224.0.0 2,097,150
16 4 255.240.0.0 1,048,574
32 5 255.248.0.0 524,286
64 6 255.252.0.0 262,142
128 7 255.254.0.0 131,070
128 8 255.255.0.0 65,534

B类:

子网数目 占用位数 子网掩码 子网中主机数
2 1 255.255.128.0 32,766
4 2 255.255.192.0 16,382
8 3 255.255.224.0 8,190
16 4 255.255.240.0 4,094
32 5 255.255.248.0 2,046
64 6 255.255.252.0 1,022
128 7 255.255.254.0 510
256 8 255.255.255.0 254

C类:

子网数目 占用位数 子网掩码 子网中主机数
2 1 255.255.255.128 126
4 2 255.255.255.192 62
8 3 255.255.255.224 30
16 4 255.255.255.240 14
32 5 255.255.255.248 6
64 6 255.255.255.252 2

③ ip地址的计算

看了一下资料 你就会了 自己掌握了才是知识
一、IP地址概念
IP地址是一个32位的二进制数,它由网络ID和主机ID两部份组成,用来在网络中唯一的标识的一台计算机。网络ID用来标识计算机所处的网段;主机ID用来标识计算机在网段中的位置。IP地址通常用4组3位十进制数表示,中间用“.”分隔。比如,192.168.0.1。
补充[IPv6]:前面所讲的32位IP地址称之为IPv4,随着信息技术的发展,IPv4可用IP地址数目已经不能满足人们日常的需要,据权威机构预测到2010年要充分应用信息技术,每个人至少需要10个IP地址,比如:计算机、笔记本、手机和智能化冰箱等。为了解决该问题开发了IPv6规范,IPv6用128位表示IP地址,其表示为8组4位16进制数,中间为“:”分隔。比如,AB32:33ea:89dc:cc47:abcd:ef12:abcd:ef12。
二、IP地址分类
为了方便IP寻址将IP地址划分为A、B、C、D和E五类,每类IP地址对各个IP地址中用来表示网络ID和主机ID的位数作了明确的规定。当主机ID的位数确定之后,一个网络中是多能够包含的计算机数目也就确定,用户可根据企业需要灵活选择一类IP地址构建网络结构。
A类A类地址用IP地址前8位表示网络ID,用IP地址后24位表示主机ID。A类地址用来表示网络ID的第一位必须以0开始,其他7位可以是任意值,当其他7位全为0是网络ID最小,即为0;当其他7位全为1时网络ID最大,即为127。网络ID不能为0,它有特殊的用途,用来表示所有网段,所以网络ID最小为1;网络ID也不能为127;127用来作为网络回路测试用。所以A类网络网络ID的有效范围是1-126共126个网络,每个网络可以包含224-2台主机。
B类B类地址用IP地址前16位表示网络ID,用IP地址后16位表示主机ID。B类地址用来表示网络ID的前两位必须以10开始,其他14位可以是任意值,当其他14位全为0是网络ID最小,即为128;当其他14位全为1时网络ID最大,第一个字节数最大,即为191。B类IP地址第一个字节的有效范围为128-191,共16384个B类网络;每个B类网络可以包含216-2台主机(即65534台主机)。
C类C类地址用IP地址前24位表示网络ID,用IP地址后8位表示主机ID。C类地址用来表示网络ID的前三位必须以110开始,其他22位可以是任意值,当其他22位全为0是网络ID最小,IP地址的第一个字节为192;当其他22位全为1时网络ID最大,第一个字节数最大,即为223。C类IP地址第一个字节的有效范围为192-223,共2097152个C类网络;每个C类网络可以包含28-2台主机(即254台主机)。
D类D类地址用来多播使用,没有网络ID和主机ID之分,D类IP地址的第一个字节前四位必须以1110开始,其他28位可以是任何值,则D类IP地址的有效范围为224.0.0.0到239.255.255.255。
E类E类地址保留实验用,没有网络ID和主机ID之分,E类IP地址的第一字节前四位必须以1111开始,其它28位可以是任何值,则E类IP地址的有效范围为240.0.0.0至255.255.255.254。其中255.255.255.2555表示广播地址。
在实际应用中,只有A、B和C三类IP地址能够直接分配给主机,D类和E类不能直接分配给计算机。
三、网络ID、主机ID和子网掩码
网络ID用来表示计算机属于哪一个网络,网络ID相同的计算机不需要通过路由器连接就能够直接通信,我们把网络ID相同的计算机组成一个网络称之为本地网络(网段);网络ID不相同的计算机之间通信必须通过路由器连接,我们把网络ID不相同的计算机称之为远程计算机。
当为一台计算机分配IP地址后,该计算机的IP地址哪部份表示网络ID,哪部份表示主机ID,并不由IP地址所属的类来确定,而是由子网掩码确定。子网确定一个IP地址属于哪一个子网。
子网掩码的格式是以连续的255后面跟连续的0表示,其中连续的255这部份表示网络ID;连续0部份表示主机ID。比如,子网掩码255.255.0.0和255.255.255.0。
根据子网掩码的格式可以发现,子网掩码有0.0.0.0、255.0.0.0、255.255.0.0、255.255.255.0和255.255.255.255共五种。采用这种格式的子网掩码每个网络中主机的数目相差至少为256倍,不利于灵活根据企业需要分配IP地址。比如,一个企业有2000台计算机,用户要么为其分配子网掩为255.255.0.0,那么该网络可包含65534台计算机,将造成63534个IP地址的浪费;要么用户为其分配8个255.255.255.0网络,那么必须用路由器连接这个8个网络,造成网络管理和维护的负担。
网络ID是IP地址与子网掩码进行与运算获得,即将IP地址中表示主机ID的部份全部变为0,表示网络ID的部份保持不变,则网络ID的格式与IP地址相同都是32位的二进制数;主机ID就是表示主机ID的部份。
例题1:IP地址:192.168.23.35 子网掩码:255.255.0.0
网络ID:192.168.0.0 主机ID:23.35
例题2:IP地址:192.168.23.35 子网掩码:255.255.255.0
网络ID:192.168.23.0 主机ID:35
四、子网和CIDR
将常规的子网掩码转换为二进制,将发现子网掩格式为连续的二进制1跟连续0,其中子网掩码中为1的部份表示网络ID,子网掩中为0的表示主机ID。比如255.255.0.0转换为二进制为11111111 11111111 00000000 00000000。
在前面所举的例子中为什么不用连续的1部份表示网络ID,连续的0部份表示主机ID呢?答案是肯定的,采用这种方案的IP寻址技术称之为无类域间路由(CIDR)。CIDR技术用子网掩码中连续的1部份表示网络ID,连续的0部份表示主机ID。比如,网络中包含2000台计算机,只需要用11位表示主机ID,用21位表网络ID,则子网掩码表示为11111111.11111111.11100000.00000000,转换为十进制则为255.255.224.0。此时,该网络将包含2046台计算机,既不会造成IP地址的浪费,也不会利用路由器连接网络,增加额外的管理维护量。
CIDR表示方法:IP地址/网络ID的位数,比如192.168.23.35/21,其中用21位表示网络ID。
例题1:192.168.23.35/21
子网掩码:11111111 11111111 11111000 00000000则为255.255.248.0
网络ID:192.168.00010111.0(其中第三个字节红色部分表示网络ID,其他表示主机ID,网络ID是表示网络ID部份保持不变主机ID全部变为0)则网络ID为192.168.16.0
起始IP地址:192.168.16.1(主机ID不能全为0,全为0表示网络ID最后一位为1)
结束IP地址:192.168.00010111.11111110(主机ID不能全为1,全为1表示本地广播)则结束IP地址为:192.168.23.254。
例题2:将163.135.0.0划分为16个子网,计算前两个子网的网络ID、子网掩码、起止IP地址。
第1步:用CIDR表示163.135.0.0/20,则子网掩码为255.255.240(11110000).0。
第2步:第一网络ID(子网掩码与IP地址与运算):163.135.0.0
第一个IP地址:163.135.0.1 结束IP地址:163.135.15.254;
第3步:第二网络ID:163.135.16.0
第一个IP地址:163.135.16.1 结束IP地址:163.135.31.254。
五、子网掩码和网络ID的快速计算方法
CIDR的子网掩码都是连续的1跟连接的0表示,则子网掩码有以下几种表示方法:
0000 0000 0
1000 0000 128
1100 0000 128+64=192
1110 0000 128+64+32=224
1111 0000 255-15=240
1111 1000 255-7=248
1111 1100 255-3=252
1111 1110 255-1=254
1111 1111 255
大家都知道11111111的十进制数为255,那么我们怎么来快速计算子网掩码呢?二进制的1=1,11=3,111=7,1111=15;那么1111 1110=255-1,1111 1100=255-3,1111 1000=255-8,1111 0000=255-15这样是不是就很快呢?只要我们一旦确定子网掩码中有多少位表示网络ID,那么我们马上就可以写出子网掩码了。那么,对于1000 0000,1100 0000和1110 0000 我们又该怎么计算呢?27=8则1000 0000=128,1100 0000=128+64,1110 0000=128+64+32,所以我们不需要去记住每一个为多少,只需要做做简单的加减法就搞定子网掩码的计算。
网络ID的结果大家都知道网络ID部份不变,主机ID部分全部变为0,那么在计算网络ID时,首先看子网掩码中有多少位用来表示网络,相应在将IP地址转换为二进制时就只转换前面几位,比如192.168.176.15/19,网络ID一共19位,则网络ID前两个字节为192.168.X.0发生变化的为第三个字节。那么怎样快速计算出这个变化的X的值呢?我们知道第三字节只有三位表示网络ID,转换时176>128,第1位为1,176-128=48<64,第2位为0,48>32第3位为1,剩下的计算就没有意义了,全都要转换为0,则网络ID为10100000,则网络ID为192.168.160.0,这样计算反而出错的可能性很小。
六、本地和远程网络概念
网络ID相同的计算机称之为本地网络,本地网络中的计算机相互通信不需要路由器连接;网络ID不相同的计算机称之为远程网络,远程网络中的计算机要相互通信必须通过路由器连接。
例题:192.168.10.14/28,192.168.10.15/28,192.168.10.16/28,192.168.10.31/28哪些是合法IP,哪些是非法IP地址?
主机ID全为0和主机ID全为1的为非法IP地址:192.168.10.15/28、192.158.10.16/28、192.168.10.31/28都是非法IP地址。
例题:192.168.10.14/28,192.168.10.15/28,192.168.10.16/28哪个不是同一网段?
网络ID相同的就属于同一网段,则192.168.10.16/28不属于同一网段。
七、子网数和主机数的计算方法
例题:172.168.34.56/20,一共划分为了多少个子网,各子网可以包含多少台主机。
172.168.34.56是一个B类地址,B类地址用16位表示网络ID,题目中20位表示网络ID,则子网位数为4位,那么子网就有24次个(即从0000、0001到1111的16种变化)。
由于IP地址是32位,用20位表示网络ID,则主机ID的位数为12位,则每个子网可以包含212-2个IP地址,即可以包含4096个IP地址。
注意:为什么计算IP地址时要减2,而计算子网数目时不减2呢?IP地址减2的原因是主机ID不能全为0也不能全为1;子网就不存在这个问题。
八、公共IP和私有IP地址
IP地址由IANA(Internet地址分配机构)管理和分配,任何一个IP地址要能够在Internet上使用就必须由IANA分配,IANA分配的能够在Internet上正常使用的IP地址称之为公共IP地址;IANA保留了一部份IP地址没有分配给任何机构和个人,这部份IP地址不能在Internet上使用,此类IP地址就称之为私有IP地址。为什么私有IP地址不能在Internet上使用呢?因为Internet上没有私有IP地址的路由。私有IP地址范围包括:
A类:10.0.0.0/8
B类:172.16.0.0/12 即172.16.0.1-172.31.255.254共16个B类网络
C类:192.168.0.0/16即192.168.0.1-192.168.255.254共256个C类网络
九、路由概念、Ping、Ipconfig、Route和Tracert命令
通过路由器将数据从一个网络传输到另一个网络称之为路由。路由选择负责在网络中选择一段最优先的路径将数据传输到目的网络,路由选择的基础和依据是路由表,路由表由目的网络ID、子网掩码、网关、接口和计费组成,通过route print可查看计算机的路由表。
Ping命令三种结果 Ipconfig命令 Tracert命令
目的地不可到达:路由表无目的地记录
超时:网关设置错有路由表记录
Ping通过:正常

更多资料请访问:http://www.ecity.cn/user/xch/from.asp?id=109&wh=badhunk
免费观看希赛所有视频及资料:http://www.ecity.cn/user/xch/from.asp?id=92&wh=badhunk

④ C#.net中,关于两个ip(是字符串)的比较计算方法

首先是你得知道内蒙古的IP段,好吧我们先假设58.18.135.*是赤峰的IP段,当然肯定不止这么少,你自己去查下赤峰 IP段,这不重要,重要是解决问题的办法:
你直接把IP取出来装在String变量里,也就是先定义一个string变量接IP段
string strIP = 什么什么什么;//取IP地址,我不知道你什么途径取得的,自己写
//然后把String按照"."分割装在string数组里
char[] separator = { ',' };
String[] chStrIP = new String[4];//因为IP段都是被"."分成4部分
chStrIP = strIP.Split(separator);
//再然后你把string 数组转成int型的
int[] chIntIP = new int[4];
for(int i=0;i<4;i++)
{
int.TryParse(chStrIP[i], out chIntIP[i]);
}
然后你就可以把chIntIP[0],chIntIP[1],chIntIP[2],chIntIP[3]取出来了,都是听话的整形,想怎么判断怎么判断,只要你知道赤峰的代码区间或者代码段,这问题就解决了,我解释的这么好,多给点分吧,再问不难,哈哈

⑤ ip地址的计算与应用

P地址(IP Address)的概念及其子网掩码(Subnet Mask)的计算对于首次学习网络知识的初学者来说是一件比较困难的事情。下文所述的是我个人的一些心得,望大家指正。

按照目前使用的IPv4的规定,对IP地址强行定义了一些保留地址,即:“网络地址”和“广播地址”。所谓“网络地址”就是指“主机号”全为“0”的IP地址,如:125.0.0.0(A类地址);而“广播地址”就是指“主机号”全为“255”时的IP地址,如:125.255.255.255(A类地址)。

而子网掩码,则是用来标识两个IP地址是否同属于一个子网。它也是一组32位长的二进制数值,其每一位上的数值代表不同含义:为“1”则代表该位是网络位;若为“0”则代表该位是主机位。和IP地址一样,人们同样使用“点式十进制”来表示子网掩码,如:255.255.0.0。

如果两个IP地址分别与同一个子网掩码进行按位“与”计算后得到相同的结果,即表明这两个IP地址处于同一个子网中。也就是说,使用这两个IP 地址的两台计算机就像同一单位中的不同部门,虽然它们的作用、功能、乃至地理位置都可能不尽相同,但是它们都处于同一个网络中。

子网掩码计算方法

自从各种类型的网络投入各种应用以来,网络就以不可思议的速度进行大规模的扩张,目前正在使用的IPv4也逐渐暴露出了它的弊端,即:网络号占位太多,而主机号位太少。目前最常用的一种解决办法是对一个较高类别的IP地址进行细划,划分成多个子网,然后再将不同的子网提供给不同规模大小的用户群使用。使用这种方法时,为了能有效地提高IP地址的利用率,主要是通过对IP地址中的“主机号”的高位部分取出作为子网号,从通常的“网络号”界限中扩展或压缩子网掩码,用来创建一定数目的某类IP地址的子网。当然,创建的子网数越多,在每个子网上的可用主机地址的数目也就会相应减少。

要计算某一个IP地址的子网掩码,可以分以下两种情况来分别考虑。

第一种情况:

无须划分成子网的IP地址。

一般来说,此时计算该IP地址的子网掩码非常地简单,可按照其定义就可写出。例如:某个IP地址为12.26.43.0,无须再分割子网,按照定义我们可以知道它是一个A类地址,其子网掩码应该是255.0.0.0;若此IP地址是一个B类地址,则其子网掩码应该为255.255.0.0;如果它是C类地址,则其子网掩码为255.255.255.0。其它类推。

第二种情况:

要划分成子网的IP地址。

在这种情况下,如何方便快捷地对于一个IP地址进行划分,准确地计算每个子网的掩码,方法的选择很重要。下面我介绍两种比较便捷的方法:

当然,在求子网掩码之前必须先清楚要划分的子网数目,以及每个子网内的所需主机数目。

方法一:利用子网数来计算。

1.首先,将子网数目从十进制数转化为二进制数;

2.接着,统计由“1”得到的二进制数的位数,设为N;

3.最后,先求出此IP地址对应的地址类别的子网掩码。再将求出的子网掩码的主机地址部分(也就是“主机号”)的前N位全部置1,这样即可得出该IP地址划分子网的子网掩码。

例如:需将B类IP地址167.194.0.0划分成28个子网:

1)(28)10=(11100)2;

2)此二进制的位数是5,则N=5;

3)此IP地址为B类地址,而B类地址的子网掩码是255.255.0.0,且B类地址的主机地址是后2位(即0-255.1-254)。于是将子网掩码255.255.0.0中的主 机地址前5位全部置1,就可得到255.255.248.0,而这组数值就是划分成 28个子网的B类IP地址 167.194.0.0的子网掩码。

方法二:利用主机数来计算。

1.首先,将主机数目从十进制数转化为二进制数;

2.接着,如果主机数小于或等于254(注意:应去掉保留的两个IP地址),则统计由“1”中得到的二进制数的位数,设为N;如果主机数大于 254,则 N>8,也就是说主机地址将超过8位;

3.最后,使用255.255.255.255将此类IP地址的主机地址位数全部置为1,然后按照“从后向前”的顺序将N位全部置为0,所得到的数值即为所求的子网掩码值。

例如:需将B类IP地址167.194.0.0划分成若干个子网,每个子网内有主机500台:

1)(500)10=(111110100)2;

2)此二进制的位数是9,则N=9;

3)将该B类地址的子网掩码255. 255.0.0的主机地址全部置 1,得到255.255.255.255。然后再从后向前将后9位置0,可得:11111111. 11111111.11111110.00000000即255.255.254.0。这组数值就是划分成主机为500台的B类IP地址 167.194.0.0的子网掩码。

⑥ ip地址和掩码计算

1) 将IP地址和子网掩码换算为二进制,子网掩码连续全1的是网络地址,后面的是主机地址。 虚线前为网络地址,虚线后为主机地址

2)IP地址和子网掩码进行与运算,结果是网络地址

3) 将上面的网络地址中的网络地址部分不变,主机地址变为全1,结果就是广播地址。

4) 地址范围就是含在本网段内的所有主机

网络地址+1即为第一个主机地址,广播地址-1即为最后一个主机地址,由此可以看出

地址范围是: 网络地址+1 至 广播地址-1

本例的网络范围是:192·168·100·1 至 192·168·100·254

也就是说下面的地址都是一个网段的。

192·168·100·1、192·168·100·2 。。。 192·168·100·20 。。。 192·168·100·111 。。。 192·168·100·254

5) 主机的数量

主机的数量=2二进制的主机位数-2

减2是因为主机不包括网络地址和广播地址。本例二进制的主机位数是8位。

主机的数量=28-2=254

(二)总体计算

我们把上边的例子合起来计算一下过程如下:

例2: IP地址为128·36·199·3 子网掩码是255·255·240·0。算出网络地址、广播地址、地址范围、主机数。

1) 将IP地址和子网掩码换算为二进制,子网掩码连续全1的是网络地址,后面的是主机地址, 虚线前为网络地址,虚线后为主机地址

2)IP地址和子网掩码进行与运算,结果是网络地址

3)将运算结果中的网络地址不变,主机地址变为1,结果就是广播地址。

4) 地址范围就是含在本网段内的所有主机

网络地址+1即为第一个主机地址,广播地址-1即为最后一个主机地址,由此可以看出

地址范围是: 网络地址+1 至 广播地址-1

本例的网络范围是:128·36·192·1 至 128·36·207·254

5) 主机的数量

主机的数量=2二进制位数的主机-2

主机的数量=212-2=4094

减2是因为主机不包括网络地址和广播地址。

从上面两个例子可以看出不管子网掩码是标准的还是特殊的,计算网络地址、广播地址、地址数时只要把地址换算成二进制,然后从子网掩码处分清楚连续1以前的是网络地址,后是主机地址进行相应计算即可。

子网掩码计算方法

子网掩码是用来判断任意两台计算机的IP地址是否属于同一子网络的根据。

最为简单的理解就是两台计算机各自的IP地址与子网掩码进行AND运算后,如果得出的结果是相同的,则说明这两台计算机是处于同一个子网络上的,可以进行直接的通讯。就这么简单。

请看以下示例:

运算演示之一:aa
I P 地址 192.168.0.1
子网掩码 255.255.255.0
AND运算

转化为二进制进行运算:
I P 地址 11010000.10101000.00000000.00000001
子网掩码 11111111.11111111.11111111.00000000
AND运算

11000000.10101000.00000000.00000000
转化为十进制后为:

192.168.0.0

运算演示之二:
I P 地址 192.168.0.254
子网掩码 255.255.255.0
AND运算

转化为二进制进行运算:
I P 地址 11010000.10101000.00000000.11111110
子网掩码 11111111.11111111.11111111.00000000
AND运算

11000000.10101000.00000000.00000000
转化为十进制后为:

192.168.0.0

运算演示之三:
I P 地址 192.168.0.4
子网掩码 255.255.255.0
AND运算

转化为二进制进行运算:
I P 地址 11010000.10101000.00000000.00000100
子网掩码 11111111.11111111.11111111.00000000
AND运算

11000000.10101000.00000000.00000000
转化为十进制后为:

192.168.0.0

通过以上对三组计算机IP地址与子网掩码的AND运算后,我们可以看到它运算结果是一样的。均为192.168.0.0

所以计算机就会把这三台计算机视为是同一子网络,然后进行通讯的。我现在单位使用的代理服务器,内部网络就是这样规划的。

也许你又要问,这样的子网掩码究竟有多少了IP地址可以用呢?你可以这样算。
根据上面我们可以看出,局域网内部的ip地址是我们自己规定的(当然和其他的ip地址是一样的),这个是由子网掩码决定的通过对255.255.255.0的分析。可得出:
前三位IP码由分配下来的数字就只能固定为192.168.0 所以就只剩下了最后的一位了,那么显而易见了,ip地址只能有(2的8次方-1),即256-1=255一般末位为0或者是255的都有其特殊的作用。

那么你可能要问了:如果我的子网掩码不是255.255.255.0呢?你也可以这样做啊假设你的子网掩码是255.255.128.0

那么你的局域网内的ip地址的前两位肯定是固定的了(什么,为什么是固定的?你看上边不就明白了吗?·#¥)

这样,你就可以按照下边的计算来看看同一个子网内到底能有多少台机器

1、十进制128 = 二进制1000 0000

2、IP码要和子网掩码进行AND运算

3、
I P 地址 00010000.01001001.1*******.********
子网掩码 11111111.11111111.10000000.00000000
AND运算

00010000.01001001.10000000.00000000
转化为十进制后为:

16 . 73 . 128 . 0

4、可知我们内部网可用的IP地址为:

00010000.01001001.10000000.00000000

00010000.01001001.11111111.11111111

5、转化为十进制:

16.73.128.0 到 16.73.255.255

6、0和255通常作为网络的内部特殊用途。通常不使用。

7、于是最后的结果如下:我们单位所有可用的IP地址为:
192.168.128.1-192.168.128.254
192.168.129.1-192.168.129.254
192.168.130.1-192.168.130.254
192.168.131.1-192.168.131.254
. . . . . . . . . . . . .
192.168.139.1-192.168.139.254
192.168.140.1-192.168.140.254
192.168.141.1-192.168.141.254
192.168.142.1-192.168.142.254
192.168.143.1-192.168.143.254
. . . . . . . . . . . . .
192.168.254.1-192.168.254.254
192.168.255.1-192.168.255.254

8、总数为(255-128+1)*(254-1+1) =128 * 254 = 32512

FAINT!!!!@#!@把我们公司都买了还买不了这么多的机器呢!·¥!·#

9、看看的结果是否正确

(1)、设定IP地址为192.168.128.1

Ping 192.168.129.233通过测试

访问http://192.168.129.233可以显示出主页

(2)、设定IP地址为192.168.255.254

Ping 192.168.129.233通过测试

访问http://192.168.129.233可以显示出主页

10、结论

以上证明我们的结论是对的。

现在你就可以看你的子网中能有多少台机器了

255.255.255.128
分解:
11111111.11111111.11111111.1000000
所以你的内部网络的ip地址只能是
xxxxxxxx.xxxxxxxx.xxxxxxxx.0???????

xxxxxxxx.xxxxxxxx.xxxxxxxx.01111111

阅读全文

与计算一串数据中的ip地址编程相关的资料

热点内容
微信广告植入系统源码 浏览:922
一年级语文上册pdf 浏览:313
好久不见app干什么用的 浏览:143
压缩包解压码对方可以更改吗 浏览:256
pdf电子书制作软件 浏览:888
数控三通编程 浏览:300
linux多终端 浏览:811
法律写作pdf 浏览:144
国货哪个品牌最好app 浏览:951
看哪个app给钱最多 浏览:178
编程靠经验吗 浏览:759
c教程pdf下载地址 浏览:573
制作视频哪个app有瘦脸功能 浏览:649
linux查看线程内存 浏览:509
命令行签名apk 浏览:92
网页照片旋转源码 浏览:842
QQ会员头像源码 浏览:263
内核命令行 浏览:324
脚本提取源码器 浏览:930
smo源码 浏览:877