亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > C++ > 正文

C語言中判斷兩個IPv4地址是否屬于同一個子網的代碼

2020-05-23 13:42:54
字體:
來源:轉載
供稿:網友

問題描述:

現給定兩個IPv4地址,和一個子網掩碼,判斷是否屬于同一個子網,若屬于,輸出1,否則輸出0。

例如輸入:

172.16.1.3

172.16.1.35

255.255.255.224

輸出:

0

解決方案:

首先將字符串格式的IP地址轉化為4字節的IP地址,然后使用與(&)運算,分別將兩個IP地址與掩碼相與,若最后的值相同,則為同一個子網,否則不是。

以下函數的作用是將字符串格式的IP轉化為4字節的IP(因為是4字節,所以使用int,但不同平臺的int所占的字節好像不同哈~不太確定)

int _to_int(char * str, int start_idx, int end_idx){ int a = 0, i; for (i = start_idx; i <= end_idx; ++i) { a = a * 10 + (str[i] - '0'); } return a;}/* * 將ip字符串轉化為4字節的整形 */int ip_to_int(char * ip){ int start = 0, i = 0, ret = 0; int shift_factor = 3; // 一開始要向右移動3 * 8位 char c; while (c = ip[i]) { if (c == '.') {  int a = _to_int(ip, start, i - 1);  int temp = shift_factor * 8;  ret = ret | (a << temp);  shift_factor--;  start = i + 1; } i++; } return ret;}

_to_int()函數的作用是將一段字符串轉化為數字,實際上就是將點分隔的字符串轉化為數字,ip_to_int()函數將字符串格式的ip轉化為整形。

以下是ip地址與子網掩碼運算的部分:

#include <stdio.h>int main(){ char a1[15], a2[15], a3[15]; gets(a1); gets(a2); gets(a3); int ip1 = ip_to_int(a1); int ip2 = ip_to_int(a2); int ip3 = ip_to_int(a3); int result = 0; if ((ip1 & ip3) == (ip2 & ip3)) { result = 1; } printf("%d", result); return 0;}

下面是其它網友的補充

題目描述

子網掩碼是用來判斷任意兩臺計算機的IP地址是否屬于同一子網絡的根據。
子網掩碼與IP地址結構相同,是32位二進制數,其中網絡號部分全為“1”和主機號部分全為“0”。利用子網掩碼可以判斷兩臺主機是否中同一子網中。若兩臺主機的IP地址分別與它們的子網掩碼相“與”后的結果相同,則說明這兩臺主機在同一子網中。
示例:
I P 地址  192.168.0.1
子網掩碼  255.255.255.0
轉化為二進制進行運算:
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

轉化為二進制進行運算:
I P 地址 11010000.10101000.00000000.11111110
子網掩碼 11111111.11111111.11111111.00000000
AND運算
     11000000.10101000.00000000.00000000
轉化為十進制后為:
     192.168.0.0
通過以上對兩臺計算機IP地址與子網掩碼的AND運算后,我們可以看到它運算結果是一樣的。均為192.168.0.0,所以這二臺計算機可視為是同一子網絡。
/*
* 功能: 判斷兩臺計算機IP地址是同一子網絡。
* 輸入參數: String Mask: 子網掩碼,格式:“255.255.255.0”;
* String ip1: 計算機1的IP地址,格式:“192.168.0.254”;
* String ip2: 計算機2的IP地址,格式:“192.168.0.1”;
*
* 返回值: 0:IP1與IP2屬于同一子網絡; 1:IP地址或子網掩碼格式非法; 2:IP1與IP2不屬于同一子網絡
*/
public int checkNetSegment(String mask, String ip1, String ip2)
{
/*在這里實現功能*/
return 0;
}
輸入描述:

輸入子網掩碼、兩個ip地址
輸出描述:

得到計算結果
輸入例子:

255.255.255.0
192.168.224.256
192.168.10.4

輸出例子:

1
解答代碼:

#include<iostream>#include<fstream>#include<string>#include<cstring>#include<cctype>#include<algorithm>#include<cstdlib>using namespace std;typedef struct ip{ int first; int second; int three;} IP;int judgeIp(string ipSubNet,IP &ip){ int index=0; ip.first=atoi(&ipSubNet[index]); if(ip.first>255) return 0; index++; index=ipSubNet.find_first_of('.',index); ip.second=atoi(&ipSubNet[++index]); if(ip.second>255) return 0; index++; index=ipSubNet.find_first_of('.',index); ip.three=atoi(&ipSubNet[++index]); if(ip.three>255) return 0; index++; index=ipSubNet.find_first_of('.',index); ip.fouth=atoi(&ipSubNet[++index]); if(ip.fouth>255) return 0; return 1;}int main(){ string ipSubNet,ipAdd1,ipAdd2; IP subNet,ip1,ip2; while(cin>>ipSubNet>>ipAdd1>>ipAdd2) { if(judgeIp(ipSubNet,subNet)&&judgeIp(ipAdd1,ip1)&&judgeIp(ipAdd2,ip2)) {  ip1.first=ip1.first & subNet.first;  ip1.second=ip1.first & subNet.second;  ip1.second=ip1.first & subNet.second;  ip1.fouth=ip1.first & subNet.fouth;  ip2.first=ip2.first & subNet.first;  ip2.second=ip2.first & subNet.second;  ip2.second=ip2.first & subNet.second;  ip2.fouth=ip2.first & subNet.fouth;  if(ip1.first==ip2.first&&ip1.second==ip2.second&&ip1.three==ip2.three&&ip1.fouth==ip2.fouth)  cout<<'0'<<endl;  else  cout<<'2'<<endl; } else  cout<<'1'<<endl; } return 0;}

C語言——如何判斷兩個IP在同一網段

ip_addr.h#define ip_addr_netcmp(addr1, addr2, mask) (((addr1)->addr & /                       (mask)->addr) == /                       ((addr2)->addr & /                       (mask)->addr))

在程序中,那個“/”表示它之前的程序和后面的是連接的,下一行和上一行是一個語句, 反斜杠符號起到長代碼分行書寫功能。

注意:C語言中的關鍵字不可以用“/”分行!

到這里,這篇關于C語言中判斷ip是否在同一子網的文章就結束到這。

 

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
国产视频久久久久| 国产精品国产三级国产专播精品人| 成人亚洲欧美一区二区三区| 九九九久久久久久| 国产精品都在这里| 国产欧美精品一区二区三区-老狼| 亚洲成色999久久网站| 综合激情国产一区| 欧美肥老妇视频| 国产精品27p| 亲子乱一区二区三区电影| 欧美午夜www高清视频| 欧美成人免费播放| 欧美日韩第一视频| 在线电影欧美日韩一区二区私密| 国内精品久久久久久久| 国产精品成av人在线视午夜片| 亚洲毛片在线观看| 久久精品久久精品亚洲人| 日韩精品中文字幕在线播放| 亚洲成人久久网| 影音先锋日韩有码| 久久999免费视频| 日本亚洲精品在线观看| 欧美国产精品人人做人人爱| 亚洲精品网址在线观看| 国产日韩在线免费| 亚洲无线码在线一区观看| 精品毛片网大全| 欧日韩在线观看| 欧美大片大片在线播放| 国产精品福利网| 欧美极品少妇与黑人| 国产在线a不卡| 国产在线观看91精品一区| 日韩免费不卡av| 成人福利视频网| 91精品国产综合久久久久久久久| 91精品久久久久久久久久久| 18性欧美xxxⅹ性满足| 日本久久久久久久久| 久久久精品亚洲| 亚洲国产福利在线| 国产69精品久久久久9| 亚洲最新av在线网站| 久久国产精品99国产精| 亚洲奶大毛多的老太婆| 国内精品视频在线| 亚洲精品乱码久久久久久金桔影视| 成人激情视频免费在线| 久久影视电视剧免费网站清宫辞电视| 久久久91精品| 最近2019中文免费高清视频观看www99| 欧美日韩亚洲系列| 欧美高清视频在线播放| 国产日本欧美一区| 97成人超碰免| 亚洲第一偷拍网| 日产日韩在线亚洲欧美| 国产精品黄页免费高清在线观看| 欧美极品美女电影一区| 国产精品久久久久久久久久久新郎| 日本电影亚洲天堂| 亚洲成人动漫在线播放| 亚洲国产精品久久久久秋霞不卡| 欧美午夜视频在线观看| 亚洲国产精品一区二区三区| 欧美人与性动交a欧美精品| 久久久999国产精品| 福利微拍一区二区| 中文字幕日韩精品在线观看| 国产精品伦子伦免费视频| 中文字幕在线看视频国产欧美在线看完整| 热久久这里只有精品| 久久精品电影网站| 久久久久久久激情视频| 91色在线观看| 亚洲自拍高清视频网站| 国产日韩在线一区| 91免费精品国偷自产在线| 午夜精品久久久久久久白皮肤| 欧美午夜片欧美片在线观看| 伊人一区二区三区久久精品| 亚洲一区美女视频在线观看免费| 午夜精品福利视频| 91精品国产乱码久久久久久蜜臀| 亚洲人成电影在线| 国产一区二区三区欧美| 久久久久久18| 一级做a爰片久久毛片美女图片| 69久久夜色精品国产7777| 亚洲成年网站在线观看| 最新中文字幕亚洲| 久久久国产在线视频| 国产精品日韩久久久久| 亚洲аv电影天堂网| 精品久久久香蕉免费精品视频| 欧美另类99xxxxx| 国产精品国模在线| 91精品91久久久久久| 国产精品一区二区久久国产| 亚洲直播在线一区| 久热99视频在线观看| 欧美日韩在线一区| 国产精品一区二区久久| 亚洲最大在线视频| 亚洲美女性视频| 日韩有码视频在线| 精品国产一区二区在线| 日韩电影免费在线观看中文字幕| 成人免费直播live| 国产精品自拍偷拍| 国语自产精品视频在线看抢先版图片| 在线日韩中文字幕| 国产精品入口日韩视频大尺度| 日本一区二区三区四区视频| 最新91在线视频| 一本色道久久88精品综合| 久久国产精品首页| 中文字幕精品影院| 91po在线观看91精品国产性色| 26uuu另类亚洲欧美日本一| 韩国19禁主播vip福利视频| 久久精品91久久香蕉加勒比| 欧美激情视频网站| 国产精品久久久久久久久免费看| 久久精品视频免费播放| 国产精品专区h在线观看| 久久综合五月天| 777午夜精品福利在线观看| 欧美日韩国产专区| 亚洲国产日韩欧美在线动漫| 精品久久香蕉国产线看观看gif| 久久精品视频播放| 伊人久久五月天| 91精品国产自产在线观看永久| 国产精自产拍久久久久久蜜| 国产精品扒开腿做爽爽爽男男| 中文字幕不卡在线视频极品| 另类少妇人与禽zozz0性伦| 精品国产精品三级精品av网址| 亚洲视频综合网| 欧美精品电影在线| 26uuu日韩精品一区二区| 庆余年2免费日韩剧观看大牛| 国产亚洲美女久久| 91国产视频在线播放| 91久热免费在线视频| 国产精品天天狠天天看| 国产精品va在线| 自拍偷拍亚洲精品| 日本道色综合久久影院| 国产一区视频在线| 国产91露脸中文字幕在线| 亚洲色无码播放| 国产精品美女午夜av| 亚洲品质视频自拍网| 成人乱人伦精品视频在线观看| 亚洲精品中文字| 亚洲美女自拍视频| 92福利视频午夜1000合集在线观看| 国产精品一区二区三区免费视频| 欧美影院久久久| 国产精品美腿一区在线看|