【正文】
ific MAC address, when the same request arrived, the same IP addresses shall be allocated again, which achieves the function that the client shall be allocated to the fixed IP addresses. If users need to manually allocate the IP address, they can modify the IP addresses that correspond to MAC address. IP addresses are set by the client system. Program development tools is Visual C + + , access the database with ADO, to optimize system performance. To avoid the block of client requests, multithread technology is used. Key words: ADO。 主要采用技術(shù) ADO ADO(ActiveX Data Objects, ActiveX 數(shù)據(jù)對象 )是 Microsoft 為強(qiáng)大的數(shù)據(jù)訪問接口 OLE DB(對象鏈接和嵌入數(shù)據(jù)庫 ) 而設(shè)計的,是一個便于使用的應(yīng)用層的編程接口。 多個線程的執(zhí)行是并發(fā)的,也就是在邏 輯上 “ 同時 ” ,而不管是否是物理上的 “ 同時 ” 。換句話說,與網(wǎng)絡(luò)相連,且負(fù)責(zé)接收廣播的所有設(shè)備都是同一廣播域的一部分。 廣播風(fēng)暴( Broadcast Storm):當(dāng)主機(jī)系統(tǒng)響應(yīng)一個在網(wǎng)上不斷循環(huán)的廣播數(shù)據(jù)包或者試圖響 應(yīng)一個沒有應(yīng)答的系統(tǒng)時就會發(fā)生廣播風(fēng)暴。新的 CHtmlView 類封裝了 Inter Exploer 瀏覽器的功能,這樣可以方便的編寫瀏覽器風(fēng)格的應(yīng)用程序。實現(xiàn)方式主要有兩種,一、由服務(wù)器自動為客戶端分配固定的 IP 地址。當(dāng)客戶端重新啟動發(fā)出請求時,服務(wù)器為客戶端分配數(shù)據(jù)庫中記錄的 IP地址。雖然客戶端與服務(wù)器物理上在一個局域網(wǎng)內(nèi),但并不能保證邏輯上在一個網(wǎng)段內(nèi),所以客戶端不知道服務(wù)器所在。從請求隊列中讀取請求信息,判斷是一次請求還是二次請求。因為不確定客戶端和服務(wù)器是否在 同一網(wǎng)段,所以還是采用廣播的方式發(fā)送應(yīng)答信息包。從配置文件中讀取分配的子網(wǎng)掩碼和網(wǎng)關(guān)。 實現(xiàn)方式 :功能在單獨的線程中實現(xiàn)。 模塊名稱:接收請求 功能描述:接收網(wǎng)絡(luò)發(fā)送來的請求包,驗證請求包的正確性和完整性,并將請求信息保存。 計算機(jī) IP 地址固定可以方便根據(jù) IP 地址設(shè)計計算機(jī)的權(quán)限和進(jìn)行訪問。 6 系統(tǒng)需求概述 本系統(tǒng)的主要目標(biāo)是實現(xiàn)實驗室計算機(jī) IP 地址的自動分配和設(shè)置,將客戶端的 IP 地址設(shè)置為固定 IP 地址。 C++ 支持動態(tài) HTML。例如, MAC 地址,格式為 1xFFFFFFFF 是一種廣播地址; IP 地址 是通用廣播地址。 IPv6 支持單播( Unicast)、組播( Multicast)以及任意播( Anycast)三種類型, IPv6 中沒有關(guān)于廣播( Broadcast)的具體劃分,而是作為組播的一個典型。 多線程 多線程是這樣一種機(jī)制,它允許在程序中并發(fā)執(zhí)行多個指令流,每個指令流都稱為一個線程,彼此間互相獨立。 本系統(tǒng)對訪問服務(wù)器的客戶端網(wǎng)卡地址和分配其的 IP 地址進(jìn)行記錄,通過網(wǎng)卡地址來標(biāo)識網(wǎng)內(nèi)某一具體主機(jī),并分配其固定的 IP 地址,從而彌補(bǔ)以上的一些不足之處。程序的開發(fā)工具為 VC++,連接數(shù)據(jù)庫方式為 ADO 方式,為了優(yōu)化系統(tǒng)性能和使客戶端的請求不阻塞,采用了多線程技術(shù)。 ( 4)學(xué)??稍试S學(xué)位論文被查閱或借閱。 [7] David C++ 技術(shù)內(nèi)幕 [M].北京: 機(jī)械工業(yè)出版社 ,2021。當(dāng)然,由于我經(jīng)驗欠缺或者是其他方面的一些原因,這次的開發(fā)也存在一些不足,如 程序 拓展性不強(qiáng) , 不能方便的實現(xiàn)一些其它的附加功能 ,類的封裝 性 不強(qiáng),程序代碼不規(guī)范 等等 。經(jīng)過測試,本系統(tǒng)基本能符合要求,也能 實現(xiàn)各功能。測試報告書對每個模塊的測試項目和測試結(jié)果進(jìn)行了記錄。 ,重新啟動客戶端,觀察是否獲得到相同 IP 地址。//網(wǎng)關(guān) if(sendto(sockSender,buf,strlen(buf)+1,0,(SOCKADDR *)amp。 } //封裝應(yīng)答包 strcpy(buf,pakhead)。//最大 ip 減小并不記錄進(jìn)配置文件 } 發(fā)送應(yīng)答模塊 發(fā)送應(yīng)答模塊的主要功能是讀取要發(fā)送的應(yīng)答信息,將子網(wǎng)掩碼,網(wǎng)關(guān)等信息封裝進(jìn)應(yīng)答包并以廣播的形式發(fā)送出去,在單獨的線程中實現(xiàn)。 (ipaddress is not enough! )。 continue。 } if(strcmp(,0))//一次請求包 { mac=。//讀取修改標(biāo)志位 if(strcmp(flag,true)==0)//判斷 管理員是否重新配置過 { if(!DeleteAll())//清空數(shù)據(jù)庫記錄 { MessageBox(NULL,delete DB record fail ,Error!,MB_OK)。 CString s=。 (write to queue fail!)。 [12]=0。 (receive package fail!)。 item++。 return。 (minIp)。從發(fā)送隊列中讀取客戶端的 IP 地址和分配給其的 IP 地址。從配置文件中讀取配置信息,判斷管理員是否重新配置過,如果重新配置過則清空數(shù)據(jù)庫記錄。 實現(xiàn)方式 : 功能在單獨的線程中實現(xiàn)。系統(tǒng)具有一定的靈活性,如果客戶端分配到的 IP 地址與其它計算機(jī)重合(可能是由于手工配置靜態(tài) IP),客戶端會發(fā)送二次請求,服務(wù)器會分配客戶端一個臨時的 IP 地址但并不記錄入數(shù)據(jù)庫,在一定程度上保證了客戶端 IP 地址的可用性。服務(wù)器可以安裝在局域網(wǎng)內(nèi)任意一臺計算機(jī)上。通過 App Wizard 可以輕松的編寫基于Web 瀏覽器的應(yīng)用程序。任何設(shè)備都將打開尋址到廣播地址的信息,并將它們傳送到下一個工作站。 網(wǎng)絡(luò)廣播中涉及以下重要概念: 廣播域( Broadcast Domain):這是一個限定區(qū)域,其中的所有設(shè)備都可以共享信息。線程又稱為輕量級進(jìn)程,它和進(jìn)程一樣擁有獨立的執(zhí)行控制,由操作系統(tǒng)負(fù)責(zé)調(diào)度,區(qū)別在于線程沒有獨立的存儲空間,而是和所屬進(jìn)程中的其它線程共享一個存儲空間,這使得線程間的通信遠(yuǎn)較進(jìn)程簡單 。 IP地址的設(shè)置由客戶端實現(xiàn)。 關(guān)鍵詞 : ADO;多線程;網(wǎng)絡(luò)廣播;網(wǎng)絡(luò)編程 the Automatic IP Address Configuration Software for Lab —— the Design and Implementation of the Serverside program Abstract More and more laboratory managers care about the IP address allocation and management problem. Most administrators are using DHCP to resolve it. Although DHCP technology can provide users convenient access to work, but there are some drawbacks, such as the random IP address. This causes the user39。 本系統(tǒng) 的主要功能就是實現(xiàn)對實驗室計算機(jī) IP 地址的靜態(tài)分配,從而解決 DHCP 技術(shù)的一些缺陷。 Network Broadcast。 ADO 不僅可以訪問關(guān)系型數(shù)據(jù)庫,還可以訪問非關(guān)系型數(shù)據(jù)庫。 多線程和傳統(tǒng)的單線程在程序設(shè)計上最大的區(qū)別在于,由于各個線程的控制流彼此獨立,使得各個線程之間的代碼是亂序執(zhí)行的 。其它節(jié)點收聽廣播,只接收尋址到它們的幀。為防止廣播風(fēng)暴的發(fā)生,需要細(xì)心配置 網(wǎng)絡(luò)以阻止非法廣播信息的進(jìn)入。DNA 技術(shù)完全支持 Microsoft Back Office 服務(wù)器方便的控件,包括微 軟的 SQL Server, Transaction Server 和 Message Server。二、由管理員手動為客戶端分配固定 IP 地址。 根據(jù)系統(tǒng)需求可以將系統(tǒng)劃分為以下主要模塊。收到客戶端請求后,通過驗證包頭信息判斷請求包的正確性,將請求信息寫入請求隊列,沒有請求到達(dá)線程在接收請求處阻塞。二次請求,將最大 IP 地址分配給其但不寫入數(shù)據(jù)庫,寫入發(fā)送隊列,最大 IP地址遞減。網(wǎng)絡(luò)應(yīng)答的發(fā)送采用Windows 套 接字編程實現(xiàn),互斥資源的訪問采用信號量機(jī)制。 //判定用戶輸入的合法性 if(()||()) { MessageBox(輸入的 ip 地址范圍不能為空 )。// 寫最大 IP 地址 WritePrivateProfileString(MINIP,minip,minIp,)。//寫網(wǎng)關(guān) Return true。//用于提取包頭 開始等待請求到達(dá)初始化環(huán)境和套接字信息驗證請求包的正確性將請求信息寫入請求隊列丟棄請求包TF 第 10 頁 共 20 頁 memcpy(temp,buf,5)。 CString macaddr=receive a request, the Macaddress is 。pak,buf,npak)。 if(Write()==false)//將請求信息寫入隊列 { 第 11 頁 共 20 頁 MessageBox(NULL,write to queue fail!,Error!,MB_OK)。 } WritePrivateProfileString(FLAG,flag,false,)。 if(!Write())//將應(yīng)答信息寫入發(fā)送隊列 { 第 13 頁 共 20 頁 MessageBox(NULL,Fail to write ipaddress to the queue! ,Error!,MB_OK)。 (Fail to write ipaddress to the queue! )。//最小 ip 寫入配置文件 } } } else//如果是二次請求 { strcpy(,MaxIp)。//從配置文件中網(wǎng)關(guān) setsockopt(sockSender,SOL_SOCKET,SO_BROADCAST,(char FAR *)amp。 strcat(buf,)。 return false。 第 17 頁 共 20 頁 測試用例: 表 2 系統(tǒng)測試用例 服務(wù)器網(wǎng)絡(luò)信息 IP 地址: 子網(wǎng)掩碼: 網(wǎng)關(guān): 客戶端網(wǎng)絡(luò)信息 IP 地址: 子網(wǎng) 掩碼: 網(wǎng)關(guān): 服務(wù)器配置信息 IP 地址范圍: ~~ 子網(wǎng)掩碼: 網(wǎng)關(guān): 客戶端獲得 IP 信息 IP 地址: 子網(wǎng)掩碼: 網(wǎng)關(guān): 修改后客戶端網(wǎng)絡(luò)信息 IP 地址: 子網(wǎng)掩碼: 網(wǎng)關(guān): 客戶端重啟后 IP 信息 IP 地址: 子網(wǎng)掩碼: 網(wǎng)關(guān): 更改后服務(wù)器網(wǎng)絡(luò)信息 IP 地址: 子網(wǎng)掩碼: 網(wǎng)關(guān): 客戶端獲得可用 IP 信息 IP 地址: 子網(wǎng)掩碼: 網(wǎng)關(guān): 模塊編程完結(jié)之后,對程序功能進(jìn)行檢測。即在把模塊按照設(shè)計要求組裝 起來的同時進(jìn)行測試,主要目標(biāo)是發(fā)現(xiàn)與接口有關(guān)的問題,測試每個功能是否都能正常工作。網(wǎng)絡(luò)通信采用廣播方式,服務(wù)器可以安裝在任意一臺計算機(jī)上面,可以接收客戶端的服務(wù)請求,根據(jù)網(wǎng)卡地址為客戶端分配固定的 IP 地址并發(fā)送給客戶端。 [2] 時代科技 .VC++ 數(shù)據(jù)庫編程大全 [M].北京:機(jī)械工業(yè)出版社 ,2021,(5):92116。除非另有說明,本文的工作是原始性工作。 特此聲明! 畢業(yè)設(shè)計 ( 論文 ) 實驗室計算機(jī) IP 地址自動設(shè)置程序 — 服務(wù)器端的設(shè)計與實 現(xiàn) 論文作者姓名: 申請學(xué)位專業(yè): 申請學(xué)位類別: 指導(dǎo)教師姓名(職稱): 論文提交日期: 實驗室計算機(jī) IP 地址自動設(shè)置程序 — 服 務(wù)器端的設(shè)計與實現(xiàn) 摘 要 IP 地址的分配和管理是 實驗室 管理員比較重視的一個問題 , 而大部分管理