【正文】
的判斷bool ipIsValid(char *)。 //定義ipTest函數(shù)~ipTest(){}。 //定義整型mask,存放子網(wǎng)掩碼中1的個(gè)數(shù)bool maskIsValid。 //定義TempIp數(shù)組,存放臨時(shí)的ip地址char TempSub[18]。 //定義subnetPlusMask數(shù)組,存放子網(wǎng)號(hào)和子網(wǎng)掩碼中1的個(gè)數(shù)char subnet[18]。 subnet 子網(wǎng)號(hào) mask 一個(gè)數(shù)值,為子網(wǎng)掩碼1的個(gè)數(shù) ip_addr是要測(cè)試的IP地址 例如:ip_test 流程圖命令行輸入?yún)?shù)格式開始子網(wǎng)長(zhǎng)度超出IP長(zhǎng)度超出subnet非法輸出“valid subnet”和子網(wǎng)輸出“subnet is invalid!”mask非法輸出“mask is invalid!”輸出“valid mask”和掩碼ip非法輸出“valid ip”和ip地址輸出“ip is invalid!”ip belong subnet輸出“ip belong to subnetPlusMask”輸出“ip not belong to subnetPlusMask”結(jié)束 Y Y N N N Y Y N N Y Y N N Y 詳細(xì)代碼include include include include include include //類結(jié)構(gòu)class ipTest{char ip[15]。 //定義輸出函數(shù)print}。 //判斷子網(wǎng)號(hào)是否合法void belong()。 //非法字符的判斷bool ipIsValid(char *)。 //定義ipTest函數(shù)~ipTest(){}。 //定義整型mask,存放子網(wǎng)掩碼中1的個(gè)數(shù)bool maskIsValid。 //定義TempIp數(shù)組,存放臨時(shí)的ip地址char TempSub[18]。 //定義subnetPlusMask數(shù)組,存放子網(wǎng)號(hào)和子網(wǎng)掩碼中1的個(gè)數(shù)char subnet[18]。 數(shù)據(jù)結(jié)構(gòu)的設(shè)計(jì)//類結(jié)構(gòu)class ipTest{char ip[15]。11001010110011100000000100000000 十進(jìn)制 目的主機(jī)二IP地址 11001010110011100000000111111110子網(wǎng)掩碼 11111111111111111111111111000000運(yùn)算結(jié)果 11001010110011100000000111000000十進(jìn)制 由此可見,宿主機(jī)與目的主機(jī)一在同一網(wǎng)段上,而與目的主機(jī)二不在同一網(wǎng)段,需要轉(zhuǎn)發(fā)。11001010110011100000000100000011 子網(wǎng)掩碼 11111111111111111111111111000000。當(dāng)網(wǎng)絡(luò)路由接收到宿主機(jī)發(fā)出的數(shù)據(jù)報(bào)時(shí),它把源地址與其子網(wǎng)掩碼進(jìn)行“與”運(yùn)算,再把目的地址與其子網(wǎng)掩碼進(jìn)行與運(yùn)算,兩次運(yùn)算的結(jié)果如果相同,則說明宿主機(jī)和目的主機(jī)都在當(dāng)前網(wǎng)絡(luò)上,不經(jīng)轉(zhuǎn)發(fā);否則,根據(jù)netid進(jìn)行轉(zhuǎn)發(fā)。掩碼位子網(wǎng)掩碼可用子網(wǎng)號(hào)前后兩段子網(wǎng)地址損失數(shù)每段子網(wǎng)最大主機(jī)數(shù)中間段地