某高校机房IP自动设置系统的实现.doc_第1页
某高校机房IP自动设置系统的实现.doc_第2页
某高校机房IP自动设置系统的实现.doc_第3页
某高校机房IP自动设置系统的实现.doc_第4页
某高校机房IP自动设置系统的实现.doc_第5页
已阅读5页,还剩15页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

591 论文网 www.591LW.com 某高校机房某高校机房 IPIP 自动设置系统的实现自动设置系统的实现 摘摘 要要 IP 地址的分配和管理是实验室管理员比较重视的一个问题,而大部分管理 员都采用的是 DHCP 技术来实现,虽然 DHCP 技术可以为用户接入网络提供方便, 但还存在一些弊端,例如:IP 地址具有随机性,用户的 IP 地址是随机分配的, 具有不确定性等等。本系统的主要功能就是实现对实验室计算机 IP 地址的静态 分配,从而解决 DHCP 技术的一些缺陷。主要实现方法为:对有请求的客户端的 网卡地址和分配给其的 IP 地址进行记录,通过网卡地址来标识某一具体主机, 当其再有请求到达时,分配给其已经记录的 IP 地址,以实现分配给客户端固定 IP 地址的功能。若要手工实现对客户端 IP 地址的静态分配,可直接在数据库 中根据网卡地址修改对应的 IP 地址即可。IP 地址的设置由客户端实现。程序 的开发工具为 VC+6.0,连接数据库方式为 ADO 方式,为了优化系统性能和使 客户端的请求不阻塞,采用了多线程技术。 关键词关键词:ADO;多线程;网络广播;网络编程 591 论文网 www.591LW.com the Automatic IP Address Configuration Software for Lab the Design and Implementation of the Server-side 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 network, but there are some drawbacks, such as the random IP address. This causes the users IP address is distributed randomly, with uncertainty. The main function of the system is to achieve the static IP address allocation of the laboratory computers. It remedies the DHCP technologys drawbacks. The system uses some network technology. It records the MAC address and the allocated IP address of the client who send the request packet to server by LAN. Through identifying a host by the specific 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 + + 6.0, access the database with ADO, to optimize system performance. To avoid the block of client requests, multithread technology is used. Key words: ADO; multithread; Network Broadcast; Network Programming 591 论文网 www.591LW.com 目目 录录 论文总页数:20 页 1引言1 1.1课题背景1 1.2主要采用技术1 1.2.1 ADO1 1.2.2 多线程1 1.2.1 网络广播2 1.3系统开发环境2 1.3.1 系统软件环境2 1.3.2 工具简介2 2系统概述3 3系统模块设计与实现4 3.1总体设计4 3.1.1 系统结构设计4 3.1.2 通信协议6 3.1.3 数据库设计6 3.2编码实现6 3.2.1 配置模块.6 3.2.2 接收请求模块.9 3.2.3 处理请求模块.11 3.2.4 发送应答模块.14 4软件测试16 结 论18 参考文献18 591 论文网 www.591LW.com 第 2 页 共 20 页 1 1 引言引言 1.11.1 课题背景课题背景 目前,对学校的实验室来说,IP 地址的分配和管理是管理员比较重视的一 个问题。而大部分管理员都采用的是 DHCP 技术来实现,DHCP 技术是通过网络 内一台服务器提供相应的网络配置服务来实现的,可以为网络终端设备提供临 时的 IP 地址、默认网关、DNS 服务器等网络配置。虽然 DHCP 技术可以为用户 接入网络提供方便,但还存在一些弊端,例如: IP 地址具有随机性,用户的 IP 地址是随机分配的,具有不确定性; 访问权限会发生变化,如果用户的访 问权限是基于 IP 地址划分的,则访问权限随 IP 地址不同而变化;不可被访问, 通过 DHCP 获得的 IP 地址具有不确定性,用户被访问难度较大。 本系统对访问 服务器的客户端网卡地址和分配其的 IP 地址进行记录,通过网卡地址来标识网 内某一具体主机,并分配其固定的 IP 地址,从而弥补以上的一些不足之处。IP 地址的设置由客户端实现。 1.21.2 主要采用技术主要采用技术 .1 ADOADO ADO(ActiveX Data Objects, ActiveX 数据对象)是 Microsoft 为强大的 数据访问接口 OLE DB(对象链接和嵌入数据库) 而设计的,是一个便于使用的 应用层的编程接口。使用 ADO 编写的应用程序可以通过 OLE DB 提供者访问和 操作数据库服务器中的数据。ADO 不仅可以访问关系型数据库,还可以访问非 关系型数据库。同时由于 OLE DB 是基于 COM 接口的技术,使用这种技术可以直 接对数据库的驱动程序进行访问,从而大大提供了访问速度。ADO 最主要的优 点是易于使用、速度快、内存支出少和磁盘冗余小。ADO 在关键的应用方案中 使用最少的网络流量,并且在前端和数据源之间使用最少的层数,所有这些都 是为了提供轻量、高性能的接口。 .2 多线程多线程 多线程是这样一种机制,它允许在程序中并发执行多个指令流,每个指令 流都称为一个线程,彼此间互相独立。线程又称为轻量级进程,它和进程一样 拥有独立的执行控制,由操作系统负责调度,区别在于线程没有独立的存储空 间,而是和所属进程中的其它线程共享一个存储空间,这使得线程间的通信远 较进程简单。 多个线程的执行是并发的,也就是在逻辑上“同时” ,而不管是否是物理上 的“同时” 。如果系统只有一个 CPU,那么真正的“同时”是不可能的,但是由 于 CPU 的速度非常快,用户感觉不到其中的区别,因此我们也不用关心它,只 591 论文网 www.591LW.com 第 3 页 共 20 页 需要设想各个线程是同时执行即可。 多线程和传统的单线程在程序设计上最大的区别在于,由于各个线程的控 制流彼此独立,使得各个线程之间的代码是乱序执行的。 .3 网络广播网络广播 网络广播是指一个节点同时向相同域中的其它所有节点传输数据包的过程。 组播是一种特殊的广播,其中一组请求收听的选定用户将收到广播。广播传输 通常在局域网(如以太网)中进行,但有时也发生在虚拟局域网(VLAN)中。 IPv6 支持单播(Unicast) 、组播(Multicast)以及任意播(Anycast)三种类 型,IPv6 中没有关于广播(Broadcast)的具体划分,而是作为组播的一个典 型。 网络广播中涉及以下重要概念: 广播域(Broadcast Domain):这是一个限定区域,其中的所有设备都可 以共享信息。换句话说,与网络相连,且负责接收广播的所有设备都是同一广 播域的一部分。在一个共享以太网中,工作站通过共享媒体将帧广播到其它所 有节点。其它节点收听广播,只接收寻址到它们的帧。因此,共享以太网中的 所有节点都属于同一广播域。此外通过虚拟局域网技术可以创建一个虚拟广播 域。 广播地址(Broadcast Address):这是一个特殊地址,当数据包可以寻址 到该地址时,可以帮助所有设备打开和处理信息。例如,MAC 地址,格式为 1xFFFFFFFF 是一种广播地址;IP 地址 55 是通用广播地址。任 何设备都将打开寻址到广播地址的信息,并将它们传送到下一个工作站。 广播风暴(Broadcast Storm):当主机系统响应一个在网上不断循环的广 播数据包或者试图响应一个没有应答的系统时就会发生广播风暴。随着网络数 据包数量的增加,广播风暴可能会引起网络拥塞问题。为防止广播风暴的发生, 需要细心配置网络以阻止非法广播信息的进入。 1.31.3 系统开发环境系统开发环境 .1 系统软件环境系统软件环境 本系统采用的软件工具有: 开发工具:VC+6.0 数据库:Microsoft Office Access 2003 .2 工具简介工具简介 Visual C+ 6.0 是微软公司重点推出的核心产品之一,它在原 MFC 类库基 础上进行了完善和扩充,功能更强,性能更优,使用更方便。MFC 是指 591 论文网 www.591LW.com 第 4 页 共 20 页 Microsoft Foundation Class ,它封装了 Windows API 的数据结构、函数及宏, 以面向对象的类的形式供程序开发者编写各种类型的程序,包括 Internet、数 据库和多媒体方面的程序。 Visual C+ 6.0 类库在以下方面比前期版本功能更强。 1.Visual C+6.0 支持动态 HTML。通过 App Wizard 可以轻松的编写基于 Web 浏览器的应用程序。新的 CHtmlView 类封装了 Internet Exploer 浏览器 的功能,这样可以方便的编写浏览器风格的应用程序。 2.Visual C+6.0 支持 Windows DNA(分布式 Internet 应用程序)架构。 DNA 技术完全支持 Microsoft Back Office 服务器方便的控件,包括微软的 SQL Server,Transaction Server 和 Message Server。 3.Visual C+ 6.0 支持更多类型的 ATL,包括 DLL 库、EXE 文件、Web 控件、 数据库和 Microsoft Back Office 应用程序。 4.Visual C+ 6.0 访问数据库的能力更强。它完全支持最新的微软数据库 标准 OLE DB,通过 COLEDBRecordView 类可以方便的浏览 OLE DB 数据库。 2 2 系统需求概述系统需求概述 本系统的主要目标是实现实验室计算机 IP 地址的自动分配和设置,将客户 端的 IP 地址设置为固定 IP 地址。服务器可以安装在局域网内任意一台计算机 上。实现方式主要有两种,一、由服务器自动为客户端分配固定的 IP 地址。当 客户端第一次运行的时候,服务器自动为客户端分配一个 IP 地址,同时将客户 端的网卡地址和分配给其的 IP 地址记录在数据库里,当客户端重新运行再次请 求的时候,服务器从数据库中提取记录的 IP 地址,分配给客户端。二、由管理 员手动为客户端分配固定 IP 地址。管理员需要知道客户端的网卡地址,将客户 端的网卡与对应匹配的 IP 地址直接录入 Access 数据库。当服务器收到客户端 请求的时候,服务器从数据库中根据客户端的网卡地址查找对应 IP 地址,将此 IP 地址分配给客户端。由于某种原因,学生做实验时可能需要重新配置 IP 地 址从而造成 IP 地址混乱的现象,通过重新启动客户端,可将各客户端 IP 地址 还原。 计算机 IP 地址固定可以方便根据 IP 地址设计计算机的权限和进行访问。 系统具有一定的灵活性,如果客户端分配到的 IP 地址与其它计算机重合(可能 是由于手工配置静态 IP) ,客户端会发送二次请求,服务器会分配客户端一个 临时的 IP 地址但并不记录入数据库,在一定程度上保证了客户端 IP 地址的可 用性。当客户端重新启动发出请求时,服务器为客户端分配数据库中记录的 IP 地址。 591 论文网 www.591LW.com 第 5 页 共 20 页 3 3 系统模块设计与实现系统模块设计与实现 3.13.1 总体设计总体设计 .1 系统结构设计系统结构设计 .2 通信协议通信协议 客户端和服务器都不知道彼此的网络配置信息,网络通信采用数据链路层 广播的形式,请求包和应答包均可到达目的地。 网络通信协议定义如下: 一次请求包: 包头(reqip:)+包体(网卡地址:计算机名) 二次请求包: 包头(REQIP:)+包体(网卡地址:计算机名) 应答包: 包头(repip:)+包体(客户端原 IP 地址:分配给客户端的 IP 地址:子网 掩码:网关) .3 数据库设计数据库设计 系统数据库只记录客户端的网卡地址、分配给客户端的 IP 地址和客户端的 计算机名。数据库设计如下: 数据库名称:IpAddr 表名:IPaddress 表 1 数据库表结构 字段名称数据类型说明 mac文本网卡地址 ip文本ip 地址 pcname文本计算机名 3.23.2 编码实现编码实现 .1 配置模块配置模块 配置模块的主要功能是配置为客户端分配的 IP 地址范围、保留的 IP 地址、 子网掩码和网关。 模块流程图如下: 591 论文网 www.591LW.com 第 6 页 共 20 页 图 2 配置模块流程图 主要实现代码为: /得到用户输入信息 m_maxIp.GetWindowText(maxIp); m_minIp.GetWindowText(minIp); m_netmask.GetWindowText(netMask); m_netgate.GetWindowText(netGate); /判定用户输入的合法性 if(maxIp.IsEmpty()|minIp.IsEmpty() MessageBox(“输入的 ip 地址范围不能为空“); return; if(netMask.IsEmpty()|netGate.IsEmpty() 开始 用户输入配置 信息 存储用户配 置信息 判断用户输 入的合法性 结束 提醒用户输入 不合法 T F 591 论文网 www.591LW.com 第 7 页 共 20 页 MessageBox(“子网掩码或网关不能为空!“); return; if(!cmpIPaddr(char*)(LPCTSTR)minIp,(char*)(LPCTSTR)maxIp) MessageBox(“地址段范围不合法!“); return; /将配置信息写入配置文件 WritePrivateProfileString(“FLAG“,“flag“,“true“,“IPaddrSer.ini“);/写修改标 志位 WritePrivateProfileString(“MAXIP“,“maxip“,maxIp,“IPaddrSer.ini“);/写最 大 IP 地址 WritePrivateProfileString(“MINIP“,“minip“,minIp,“IPaddrSer.ini“);/写最小 IP 地址 WritePrivateProfileString(“DISABLEIP“,NULL,NULL,“IPaddrSer.ini“);/清空 保留 IP 地址 /重写保留 IP 地址 maxDisIpNo=m_disip.GetCount(); while(itemAddString(macaddr); /控件上显示请求信息 if(strcmp(temp,“REQIP“)=0)/二次请求包 /请求信息写入结点 memcpy( strcpy(addr.mac,“0“); strcpy(addr.pcname,pak.body); strcpy(addr.ip,inet_ntoa(saClient.sin_addr); CString macaddr=“warning ! receive a request, the Macaddress is “; CString s=pak.macaddr; macaddr=macaddr+s; Log.WriteLog(char*)(LPCTSTR)macaddr); if(Write()=false)/将请求信息写入队列 591 论文网 www.591LW.com 第 10 页 共 20 页 MessageBox(NULL,“write to queue fail!“,“Error!“,MB_OK); Log.WriteLog(“write to queue fail!“); recptr-AddString(macaddr); /控件上显示请求信息 .3 处理请求模块处理请求模块 处理模块请求主要功能是为客户端分配对应的 IP 地址,通过查询数据库为 客户端分配固定的 IP 地址。 模块流程图如下: 591 论文网 www.591LW.com 第 11 页 共 20 页 图 4 处理请求模块流程图 主要实现代码如下: GetPrivateProfileString(“FLAG“,“flag“,“000“,flag,sizeof(flag),“IPaddrSer.ini “);/读取修改标志位 if(strcmp(flag,“true“)=0)/判断管理员是否重新配置过 if(!DeleteAll()/清空数据库记录 MessageBox(NULL,“delete DB record fail “,“Error!“,MB_OK); Log.WriteLog(“delete DB record fail “); return false; 开始 判断队列中是否有 请求 读出请求信息 判断请求类别 分配最大IP地址, 最大IP递减 查询该客户端的记录 是否存在该客 户端的记录 分配最小IP,最小 IP递增 分配信息记录数 据库 应答信息写入发送 队列 查询分配给该客户 端的IP地址 应答信息写入发送 队列 应答信息写入发送 队列 T F 二次请求 一次请求 T F 591 论文网 www.591LW.com 第 12 页 共 20 页 WritePrivateProfileString(“FLAG“,“flag“,“false“,“IPaddrSer.ini“);/写入 flag 标志为 false GetPrivateProfileString(“MAXIP“,“maxip“,“0“,MaxIp,sizeof(MaxIp),“IPadd rSer.ini“);/初始化最大 ip 地址 GetPrivateProfileString(“MINIP“,“minip“,“0“,MinIp,sizeof(MinIp),“IPaddrS er.ini“);/初始化最小 ip 地址 while(threadFlag) if(Read()=false)/请求队列为空 Sleep(100); continue; if(strcmp(req.mac,“0“)/一次请求包 mac=req.mac; strcpy(rep.ipsend,req.ip); if(Search(mac,ip)/根据网卡地址数据库中查找 ip 地址并找到 strcpy(rep.ipallot,(char*)(LPCTSTR)ip); if(!Write()/将应答信息写入发送队列 MessageBox(NULL,“Fail to write ipaddress to the queue! “,“Error!“,MB_OK); Log.WriteLog(“Fail to write ipaddress to the queue! “); continue; else/没有找到要分配的 ip 地址 if(ipcmp(MinIp,MaxIp)=0)/判断是否有剩余的 ip 地址分配 MessageBox(NULL,“ipaddress is not enough! 591 论文网 www.591LW.com 第 13 页 共 20 页 “,“Error!“,MB_OK); Log.WriteLog(“ipaddress is not enough! “); continue; else strcpy(rep.ipallot,MinIp);/将最小 ip 分配 if(!Write()/应答信息写入发送队列 MessageBox(NULL,“Fail to write ipaddress to the queue! “,“Error!“,MB_OK); Log.WriteLog(“Fail to write ipaddress to the queue! “); continue; if(!AddRecord(mac,MinIp,req.pcname)/记录分配结果以 备下次查询时分配相同的 ip MessageBox(NULL,“add ip fail“,“Error“,MB_OK); Log.WriteLog(“add ip fail“); if(AddMinIP(MinIp)=false)/最小 ip 增加 MessageBox(NULL,“ipaddress is not enough! “,“Error!“,MB_OK); Log.WriteLog(“ipaddress is not enough! “); continue; WritePrivateProfileString(“MINIP“,“minip“,MinIp,“IPaddrSer.ini“);/最小 ip 写 入配置文件 else/如果是二次请求 591 论文网 www.591LW.com 第 14 页 共 20 页 strcpy(rep.ipallot,MaxIp);/分配给最大 ip if(!Write() MessageBox(NULL,“Fail to write ipaddress to the queue! “,“Error!“,MB_OK); Log.WriteLog(“Fail to write ipaddress to the queue! “); continue; SubMaxip(MaxIp,MinIp);/最大 ip 减小并不记录进配置文件 .4 发送应答模块发送应答模块 发送应答模块的主要功能是读取要发送的应答信息,将子网掩码,网关等 信息封装进应答包并以广播的形式发送出去,在单独的线程中实现。 模块流程图如下: 591 论文网 www.591LW.com 第 15 页 共 20 页 图 5 发送应答模块流程图 主要实现代码如下: GetPrivateProfileString(“NETMASK“,“netmask“,“,netmask,sizeof(netmask),“ IPaddrSer.ini“);/从配置文件中读子网掩码 GetPrivateProfileString(“NETGATE“,“netgate“,“,netgate,sizeof(netgate),“IP addrSer.ini“);/从配置文件中网关 setsockopt(sockSender,SOL_SOCKET,SO_BROADCAST,(char FAR *)/设置为可以发送广播 saClient.sin_addr.s_addr=INADDR_BROADCAST;/设置为广播地址 while(threadFlag) /线程结束标志位 开始 初始化网络环 境,读取配置 信息 判断队列中是否有 发送信息 将发送信息读 取出来 T F 将子网掩码, 网关等信息封 装进应答包 以广播形式发 送出去 591 论文网 www.591LW.com 第 16 页 共 20 页 if(Read()=false)/读取发送信息 Sleep(100); continue; /封装应答包 strcpy(buf,pakhead);/包头 strcat(buf,m_ip.ipsend);/原 IP 地址 strcat(buf,“:“); strcat(buf,m_ip.ipallot);/分配的 IP 地址 strcat(buf,“:“); strcat(buf,netmask);/子网掩码 strcat(buf,“:“); strcat(buf,netgate);/网关 if(sendto(sockSender,buf,strlen(buf)+1,0,(SOCKADDR *) Log.WriteLog(“send ipaddress fail“); return false; 4 4软件测试软件测试 测试地点:学生寝室 硬件环境:2 台计算机,小型交换机。 测试方法: 1.在一台计算机上安装服务器,另一台安装客户端通过小型交换机相连。 2.配置服务器和客户端 IP 信息,使其不在同一网段内。 3.配置好服务器后启动服务器,启动客户端,察看客户端是否能得到正确 IP 地址。 4.更改客户端网络配置信息,重新启动客户端,观察是否获得到相同 IP 地 址。 5.更改服务器 IP 地址和客户端相同,重新启动客户端服务。 6.观察客户端是否得到新的 IP 地址。 测试用例: 591 论文网 www.591LW.com 第 17 页 共 20 页 表 2 系统测试用例 服务器网络信息 IP 地址:00 子网掩码: 网关: 客户端网络信息 IP 地址:98 子网掩码:92 网关:93 服务器配置信息 IP 地址范围: 子网掩码: 网关: 客户端获得 IP 信息 IP 地址: 子网掩码: 网关: 修改后客户端网络信息 IP 地址:35 子网掩码:92 网关:93 客户端重启后 IP 信息 IP 地址: 子网掩码: 网关: 更改后服务器网络信息 IP 地址: 子网掩码: 网关: 客户端获得可用 IP 信息 IP 地址: 子网掩码: 网关: 模块编程完结之后,对程序功能进行检测。首先针对一个模块测试,由于 有部分参数是需要从其它模块传递过来的,因此,先要把需要传递的参数付与 固定的值,然后才继续后续步骤。模块测试时,检验模块每个功能是否都能正 常使用,包括参数类型、参数大小、界面等是否符合规范。还有检测程序内部 的主执行通路

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论