ImageVerifierCode 换一换
格式:DOC , 页数:11 ,大小:107KB ,
资源ID:3550425      下载积分:20 文钱
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,省得不是一点点
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.wenke99.com/d-3550425.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: QQ登录   微博登录 

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(C#模拟实现DHCP服务器.doc)为本站会员(hw****26)主动上传,文客久久仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知文客久久(发送邮件至hr@wenke99.com或直接QQ联系客服),我们立即给予删除!

C#模拟实现DHCP服务器.doc

1、使用 TcpClient 不完备实现 DHCP 服务器端namespace DHCPserver/ / 客户端申请组件/ struct clientComputerInfoprivate string computerMac; /暂时还不知道如何取MAC地址,先用这个吧public string ComputerMacget return computerMac; set computerMac = value; private string computerName;public string ComputerNameget return computerName; set computer

2、Name = value; public clientComputerInfo(string computerName)puterName = computerName;puterMac = “00-00-00-00-00-00-00-E0“;public void showDhcpClientInfo()Console.WriteLine(“有一个DHCP客户端向你索要地址 ,它的信息如下“ );Console.WriteLine(“计算机名为:“ + computerName);Console.WriteLine(“计算机mac地址:“ + computerMac);/ / 数据访问组件/

3、 class sqlDataSourceAccess/放心,实际开发中绝对不会把它硬编码在此,通过反编译可以反回这个.如果是在ASP.NET中的Web.Config 中还可以通过命令行加密.aspnet_regiis -pef .private string sqlConnStr = “Data Source=HELLA-PC;Integrated Security=true;Initial Catalog=DHCPServerIPPool;“;private SqlConnection sqlConn = null;private DataSet sqlDataSet = null;priv

4、ate SqlCommand sqlCmd = null;/ / 打开一个连接/ / 返回一个连接 public SqlConnection getSqlConn()trysqlConn = new SqlConnection(sqlConnStr);sqlConn.Open();return sqlConn;catch (Exception)throw new Exception(“数据库连接发生要异常 !“);/ / 关闭一个已打开的连接/ / 已打开的连接对象public void closeSqlConn(SqlConnection sqlConn)if (sqlConn.State

5、= ConnectionState.Open)sqlConn.Close();/ / 使用存过/ / 存过名/ 存过参数/ public DataSet getDataSetSto(string stor, SqlParameter paras)sqlCmd = new SqlCommand(stor, getSqlConn();sqlCmd.CommandType = CommandType.StoredProcedure;for (int i = 0; i / 返一个sql命令返回的结果集/ / sql命令/ ql命令中的参数 / 此sql命令的结果集public DataSet getD

6、ataSet(string sql, SqlParameter paras)sqlCmd = new SqlCommand(sql, getSqlConn();for (int i = 0; i “ + AssignIpInfo.ComputerMac + “ 主机名为:“ + AssignIpInfo.ComputerName);sw.Flush();sw.Close();elseFile.AppendAllText(“G:ExceptionAssignIpInfo.txt“, “时间为:“ + DateTime.Now.ToString() + “:分配IP为“ + assignIp +

7、“ 分配给了mac为“ + AssignIpInfo.ComputerMac + “ 主机名为:“ + AssignIpInfo.ComputerName);public void writerException(Exception ex)if (!File.Exists(“G:Exceptionexception.txt“)StreamWriter sw = new StreamWriter(File.Create(“G:Exceptionexception.txt“);sw.WriteLine(DateTime.Now.ToString() + “这是第一次发生异常:“ + ex.Mess

8、age);sw.Flush();sw.Close();elseFile.AppendAllText(“G:Exceptionexception.txt“, DateTime.Now + “异常信息:“ + ex.Message);class Programstatic sqlDataSourceAccess findIpObj = new sqlDataSourceAccess();static LogInto logInto = new LogInto();static List dhcpClient = new List();static void Main(string args)Con

9、sole.BackgroundColor = ConsoleColor.Blue;IPAddress ip = IPAddress.Parse(“192.168.1.1“); /DHCP服务器地址IPEndPoint ipAndEnd = new IPEndPoint(ip, 68);TcpListener tcpListener = new TcpListener(ipAndEnd);tcpListener.Start();/起来无限监听的线程,该线程下还有两儿子线程Thread listenerTh1 = new Thread(listenerClient);listenerTh1.Sta

10、rt(tcpListener);/再来一个广播线程Thread broadCastTh = new Thread(new ThreadStart(broadCastClient);broadCastTh.Start();/再来服务器展示时间线程Thread serverShowTime = new Thread(new ThreadStart(showTimeClient);serverShowTime.Start();/ / 一个时间展示的小线程/ static void showTimeClient()while (true)Console.Title = DateTime.Now.ToS

11、tring();Thread.Sleep(1000);/ / 对每个向此服务器索引过ip的客户端广播信息。/ static void broadCastClient()tryStreamWriter broadCast = null;while (true)Console.WriteLine(“果断向客户端广播信息“);string broadCastMess = Console.ReadLine();foreach (TcpClient temp in dhcpClient)broadCast = new StreamWriter(temp.GetStream();broadCast.Wri

12、teLine(broadCastMess);broadCast.Flush();catch (Exception ex) /使用老祖宗比较爽logInto.writerException(ex);static void listenerClient(object obj)TcpListener tcpListener = obj as TcpListener;TcpClient clientTcpclient = null;while (true)clientTcpclient = tcpListener.AcceptTcpClient();dhcpClient.Add(clientTcpcl

13、ient); /每来一个索取IP 的客户加入此泛型集合 /来一个读线程,来说明有索取IP的客户向我们索要地址来了Thread clientReader = new Thread(toClientReader);clientReader.Start(clientTcpclient.GetStream();/向客户的线程,为索取IP的客户展示选择.注意,此线程采有形式参数的委托类型Thread clientWriter = new Thread(toClientWriter);clientWriter.Start(clientTcpclient.GetStream();/ / 输出申请IP客户端的

14、详细信息/ / 是委托ParameterizedThreadStart()中的Object参数,以便与此委托相匹配.private static void toClientReader(object obj)NetworkStream nsC = obj as NetworkStream;/ 对网络络流进行一次包装,方便操作StreamReader serverReader = new StreamReader(nsC);StreamWriter serverWriter = new StreamWriter(nsC);/输出索取IP客户的详细信息,待一下可以写日志clientComputer

15、Info dhcpClient = new clientComputerInfo();dhcpClient.ComputerMac = serverReader.ReadLine();dhcpClient.ComputerName = serverReader.ReadLine();dhcpClient.showDhcpClientInfo();trystring optionIp = serverReader.ReadLine();int option = Convert.ToInt32(optionIp);if (option = 1 /这里里在数据库中忘记了设置“ 子网 “+“网关“+“

16、Dns地址“,记得加上.serverWriter.Flush();/进行分配后进行日志记录logInto.writeAssignIpInfo(dhcpClient, ipDataSet.Tables0.Rows00.ToString();elseserverWriter.WriteLine(“你选择有误!“);serverWriter.Flush();catch (Exception ex)logInto.writerException(ex);/ / 向客户端发放还没有用的IP/ / 是委托ParameterizedThreadStart()中的Object参数,以便与此委托相匹配.priv

17、ate static void toClientWriter(object obj)NetworkStream nsC = obj as NetworkStream;StreamWriter serverWriter = new StreamWriter(nsC);DataSet selectDataSet = findIpObj.getDataSet(“SELECT ID,IP FROM DHCPIpPool WHERE IPStatus=0“, new SqlParameter0);string sendLine = string.Empty;for (int i = 0; i selec

18、tDataSet.Tables.Count; i+) /有多少个表for (int j = 0; j selectDataSet.Tablesi.Rows.Count; j+) /每个表有多少行for (int z = 0; z selectDataSet.Tablesi.Columns.Count; z+) /每个有多少列sendLine += selectDataSet.Tablesi.Rowsjz.ToString() + “ “;serverWriter.WriteLine(sendLine.ToString();serverWriter.Flush();sendLine = “;Th

19、read.Sleep(1);serverWriter.WriteLine(“请选择一个IP 的编号:“ );serverWriter.Flush();/*CREATE PROC selectIPID INT AS SELECT IP FROM DHCPIpPool WHERE ID=ID AND IPStatus=0UPDATE DHCPIpPool SET IPStatus=1 WHERE ID=ID*/使用 TcpClient 不完备实现 DHCP 客户端namespace clientstruct clientComputerInfoprivate string computerMac;

20、 /暂时还不知道如何取MAC地址,先用这个吧public string ComputerMacget return computerMac; set computerMac = value; private string computerName;public string ComputerNameget return computerName; set computerName = value; public clientComputerInfo(string computerName)puterName = computerName;puterMac = “00-00-00-00-00-0

21、0-00-E0“;public void showDhcpClientInfo()Console.WriteLine(“有一个DHCP客户端向你索要地址 “);Console.WriteLine(“计算机名为:“ + computerName);Console.WriteLine(“计算机mac地址:“ + computerMac);class Programstatic void Main(string args)Console.BackgroundColor = ConsoleColor.Red;IPAddress ip = IPAddress.Parse(“192.168.1.1“);

22、/原本是要“ 源:0.0.0.0目:255.255.255.255 端:67“,而且使用的UDP 端口 ,现在是使用TcpClient模拟IPEndPoint ipAndEnd = new IPEndPoint(ip, 68);TcpClient clientConnection = new TcpClient();clientConnection.Connect(ipAndEnd);Console.WriteLine(“连接DHCP服务器成功 !“);StreamReader clientReader = new StreamReader(clientConnection.GetStream

23、();StreamWriter clientWriter = new StreamWriter(clientConnection.GetStream();/向服务器申请,关于自己机器的详细信息,很快走完.Thread sendServerInfoTh = new Thread(new ParameterizedThreadStart(sendServerInfo);sendServerInfoTh.Start(clientWriter);/取得服务器的IP选择列表Thread getServerIpList = new Thread(new ParameterizedThreadStart(getServerIpListClient);getServerIpList.Start(clientReader);clientWriter.WriteLine(Console .ReadLine();clientWriter.Flush();

Copyright © 2018-2021 Wenke99.com All rights reserved

工信部备案号浙ICP备20026746号-2  

公安局备案号:浙公网安备33038302330469号

本站为C2C交文档易平台,即用户上传的文档直接卖给下载用户,本站只是网络服务中间平台,所有原创文档下载所得归上传人所有,若您发现上传作品侵犯了您的权利,请立刻联系网站客服并提供证据,平台将在3个工作日内予以改正。