实验室计算机的ip地址自动设置程序——服务器端的设计与实现—免费毕业设计论文内容摘要:
T_ERROR) //没有数据到达,线程将在此处阻塞 { MessageBox(NULL,receive package fail!,Error!,MB_OK)。 (receive package fail!)。 continue。 } char temp[6]。 //用于提取包头 开始等待请求到达初始化环境和套接字信息验证请求包的正确性将请求信息写入请求队列丢弃请求包TF 第 10 页 共 20 页 memcpy(temp,buf,5)。 temp[5]=0。 if(strcmp(temp,(char*)(LPCTSTR)PakHead)==0)//为第一次请求包 { //请求信息写入结点 memcpy(amp。 pak,buf,npak)。 memcpy(,12)。 [12]=0。 strcpy(,)。 strcpy(,i_ntoa())。 CString macaddr=receive a request, the Macaddress is。 CString s=。 macaddr=macaddr+s。 ((char*)(LPCTSTR)macaddr)。 //写日志 if(Write()==false)//将请求信息存放在 结 点后写入请求队列 { MessageBox(NULL,write to queue fail!,Error!,MB_OK)。 (write to queue fail!)。 } recptrAddString(macaddr)。 //控件上显示请求信息 } if(strcmp(temp,REQIP)==0)//二次请求包 { //请求信息写入结点 memcpy(amp。 pak,buf,npak)。 strcpy(,0)。 strcpy(,)。 strcpy(,i_ntoa())。 CString macaddr=warning ! receive a request, the Macaddress is。 CString s=。 macaddr=macaddr+s。 ((char*)(LPCTSTR)macaddr)。 if(Write()==false)//将请求信息写入队列 { 第 11 页 共 20 页 MessageBox(NULL,write to queue fail!,Error!,MB_OK)。 (write to queue fail!)。 } recptrAddString(macaddr)。 //控件上显示请求信息 处理请求模块 处理模块请求主要功能是为客户端分配对应的 IP 地址,通过查询数据库为客户端分配固定的 IP 地址。 模块流程图如下: 图 4 处理请求模块流程图 开始判断队列中是否有请求读出请求信息判断请求类别分配最大 IP 地址 ,最大 IP 递减查询该客户端的记录是否存在该客户端的记录分配最小 IP , 最小IP 递增分配信息记录数据库应答信息写入发送队列查询分配给该客户端的 IP 地址应答信息写入发送队列应答信息写入发送队列TF二次请求一次请求TF 第 12 页 共 20 页 主要实现代码如下: GetPrivateProfileString(FLAG,flag,000,flag,sizeof(flag),ni)。 //读取修改标志位 if(strcmp(flag,true)==0)//判断 管理员是否重新配置过 { if(!DeleteAll())//清空数据库记录 { MessageBox(NULL,delete DB record fail ,Error!,MB_OK)。 (delete DB record fail )。 return false。 } WritePrivateProfileString(FLAG,flag,false,)。 // 写入 flag 标志为 false } GetPrivateProfileString(MAXIP,maxip,0,MaxIp,sizeof(MaxIp),IPad)。 //初始化最大 ip 地址 GetPrivateProfileString(MINIP,minip,0,MinIp,sizeof(MinIp),IPaddr)。 //初始化最小 ip 地址 while(threadFlag) { if(Read()==false)//请求队列为空 { Sleep(100)。 continue。 } if(strcmp(,0))//一次请求包 { mac=。 strcpy(,)。 if(Search(mac,ip))//根据网卡地址数据库中查找 ip 地址并找到 { strcpy(,(char*)(LPCTSTR)ip)。 if(!Write())//将应答信息写入发送队列 { 第 13 页 共 20 页 MessageBox(NULL,Fail to write ipaddress to the queue! ,Error!,MB_OK)。 (Fail to write ipaddress to the queue! )。 continue。 } } else//没有找到要分配的 ip 地址 { if(ipcmp(MinIp,MaxIp)==0)//判断是否有剩余的 ip 地址分配 { MessageBox(NULL,ipaddress is not enough! ,Error!,MB_OK)。 (ipaddress is not enough! )。 continue。 } else { strcpy(,MinIp)。 //将最小 ip 分配 if(!Write())//应答信息写入发送队列 { MessageBox(NULL,Fail to write ipaddress to the queue! ,Error!,MB_OK)。 (Fail to write ipaddress to the queue! )。 continue。 } if(!AddRecord(mac,MinIp,))// 记录分配结果以备下次查询时分配相同的 ip { MessageBox(NULL,add ip fail,Error,MB_OK)。 (add ip fail)。 } if(AddMinIP(MinIp)==false)//最小 ip 增加 { 第 14 页 共 20 页 MessageBox(NULL,ipaddress is not enough! ,Error!,MB_OK)。 (ipaddress is not enough! )。 continue。 } WritePrivateProfileString(MINIP,minip,MinIp,)。 //最小 ip 写入配置文件 } } } else//如果是二次请求 { strcpy(,MaxIp)。 //分配给最大 ip if(!Write()) { MessageBox(NULL,Fail to write ipaddress to the queue! ,Error!,MB_OK)。 (Fail to write ipaddress to the queue! )。 continue。 } SubMaxip(MaxIp,MinIp)。 //最大 ip 减小并不记录进配置文件 } 发送应答模块 发送应答模块的主要功能是读取要发送的应答信息,将子网掩码,网关等信息封装进应答包并以广播的形式发送出去,在单独的线程中实现。 模块流程图如下: 第 15 页 共 20 页 图 5 发送 应答模块流程图 主要实现代码如下 : GetPrivateProfileString(NETMASK,mask,mask,sizeof(mask),)。 //从配置文件中读子网掩码 GetPrivateProfileString(NETGATE,gate,gate,sizeof(gate),I)。 //从配置文件中网关 setsockopt(sockSender,SOL_SOCKET,SO_BROADCAST,(char FAR *)amp。 opt,sizeof(opt))。 //设置为可以发送广播 =INADDR_BROADCAST。 //设置为广播地址 while(threadFlag) //线程结束标志位 开始初始化网络环境 , 读取配置信息判断队列中是否有发送信息将发送信息读取出来TF将子网掩码 ,网关等信息封装进应答包以广播形式发送出去 第 16 页 共 20 页 { if(Read()==false)//读取发送信息 { Sleep(100)。 continue。 } //封装应答包 strcpy(buf,pakhead)。 //包头 strcat(buf,)。 //原 IP 地址 strcat(buf,:)。 strcat(buf,)。 //分配的 IP 地址 strcat(buf,:)。 strcat(buf,mask)。 //子网掩码 strcat(buf,:)。 strcat(buf,gate)。 //网关 if(sendto(sockSender,buf,strlen(buf)+1,0,(SOCKADDR *)amp。 saClient,sizeof(SOCKADDR_IN))==SOCKET_ERROR)//发送 { MessageBox(NULL,send ipaddress fail,Error!,MB_OK)。 (send ipaddress fail)。 return false。 } 4 软件测试 测试地点:学生寝室 硬件环境 : 2 台计算机,小型交换机。 测试方法: ,另一台安装客户端通过小型交换机相连。 客户端 IP 信息,使其不在同一网段内。 ,启动客户端,察看客户端是否能得到正确IP 地址。 ,重新启动客户端,观察是否获得到相同 IP 地址。 IP 地址和客户端相同,重新启动客户端服务。 IP 地址。 第 17 页 共 20 页 测试用例: 表 2 系统测试用例 服务器网络信息 IP 地址: 子网掩码: 网关: 客户端网络信息 IP 地址: 子网 掩码: 网关: 服务器配置信息 IP 地址范围: ~~ 子网掩码: 网关: 客户端获得 IP 信息 IP 地址: 子网掩码: 网关: 修改后客户端网络信息 IP 地址: 子网掩码: 网关: 客户端重启后 IP 信息 IP 地址: 子网掩码: 网关: 更改后服务器网络信息 IP 地址: 子网掩码: 网关: 客户端获得可用 IP 信息 IP 地址: 子网掩码: 网关: 模块编程完结之后,对程序功能进行检测。 首先针对一个模块测试,由于有部分参数是需要从其它模块传递过来的,因此,先要把需要传递的参数付与固定的值,然后才继 续后续步骤。 模块测试时,检验模块每个功能是否都能正常使用,包括参数类型、参数大小、界面等是否符合规范。 还有检测程序内部的主执行通路是否都能按预定要求正常工作,能按正确输出,能运行稳定。 测试过程中,测试员要填写测试报告书。 测试报告书对每个模块的测试项目和测试结果进行了记录。 发现 BUG 时及时提出以便修正。 模块测试完后,先把在模块测试时固定了的需要。实验室计算机的ip地址自动设置程序——服务器端的设计与实现—免费毕业设计论文
相关推荐
┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ 装 ┊ ┊ ┊ ┊ ┊ 订 ┊ ┊ ┊ ┊ ┊ 线 ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ 7 本系统主要是对学生交费以及各专业部门收费 项目情况进行管理的信息处理软件,它能够 及时 准确的 反映 出 学生 各 年度 的交费、欠费情况。 本 系统的开发主要包括后台数据库的 建立、维护以及前端应用程序的开发两个方面。 开发技术 采用 了 目前比较主流
1、高中物理资源下载平台世昌的博客 (时间: 150 分钟;满分:300 分)本试卷分第卷(选择题)和第卷。 第卷为必考题,第卷包括必考题和选考题两部分。 注意事项:1答题前,考生务必先将自己的姓名、准考证号填写在答题卡上。 2考生作答时,请将答案答在答题卡上,在本试卷上答题无效;按照题号在各题的答题区域内作答,超出答题区域书写的答案无效。 3选择题答案使用 2B 铅笔填涂,如需改动
图 34 d2点短路等值电路图见图 其中: 化简得到图 35,如下 : 图 35 1 4 5 9 xxx2020 届电气工程及其自动化(电力)专业毕业设计(论文) 21 计算电抗: 短路电流标幺值: 归算到 110KV 侧短路电流周期分量 2020:200:1:2:1201BNjsBNjsjsjsSSxxGSSxxGxsxs 1:2 1
cR = KN/ 3m 钢筋强度等级: HPB235 yf = KN/ 2mm 抹灰厚度 : c= ㎜ sR = KN/ 3m 梯段纵筋合力点至近边距离: sa =20 ㎜ 支座负筋系数: a= 计算过程 ( 1)、楼梯的几何参数 踏步高度: h = m 踏步宽度: b = m 计算跨度: 0l = l + 2 21 bb =+ 2 = m 楼梯段与水平方向夹角余弦值: cosa= (
1、高中物理资源下载平台世昌的博客 ,满分 300 分,考试用时 150 分钟注意事项:1本试卷分第卷(选择题)和第卷(非选择题) 两部分答题前,考生务必将自己的姓名、考号等信息填写在答题卡上2回答第卷时,每小题选出答案后,用铅笔把答题卡上对应题目的答案标号涂黑,如需改动,用橡皮擦干净后,再选涂其他答案标号写在试卷上的无效3回答第卷时,将答案写在答题卡上,写在试卷上无效4考试结束后,只交答题卡本
5 1 .4 1 5 2 22 112 2 0 .1 2 2 .0 0 2 223 11 0 7 .2 9 2 2 1 8 4 .7 8 9 .12 287 .51 149 .70 . /K N m m 以上计算实为工况 4的计算过程,下面 进行分工况逐层开挖的计算。 工况 1 (开挖至挡土桩顶端,即为