第一篇:网络课程设计(共)
南 华 大 学
络 安
题目:RSA加解密算法 姓名: 学号:
导师: 全 网
1.实验目的
通过C#语言编程实现Rsa加密算法,加深对公开密码体制的了解。
2.RSA原理
2.1 RSA概述
当前最著名、应用最广泛的公钥系统RSA是在1978年,由美国麻省理工学院(MIT)的Rivest、Shamir和Adleman在题为《获得数字签名和公开钥密码系统的方法》的论文中提出的。它是一个基于数论的非对称(公开钥)密码体制,是一种分组密码体制。其名称来自于三个发明者的姓名首字母。它的安全性是基于大整数素因子分解的困难性,而大整数因子分解问题是数学上的著名难题,至今没有有效的方法予以解决,因此可以确保RSA算法的安全性。RSA系统是公钥系统的最具有典型意义的方法,大多数使用公钥密码进行加密和数字签名的产品和标准使用的都是RSA算法。
RSA算法是第一个既能用于数据加密也能用于数字签名的算法,因此它为公用网络上信息的加密和鉴别提供了一种基本的方法。它通常是先生成一对RSA 密钥,其中之一是保密密钥,由用户保存;另一个为公开密钥,可对外公开,甚至可在网络服务器中注册,人们用公钥加密文件发送给个人,个人就可以用私钥解密接受。为提高保密强度,RSA密钥至少为500位长,一般推荐使用1024位。
该算法基于下面的两个事实,这些事实保证了RSA算法的安全有效性: 1)已有确定一个数是不是质数的快速算法; 2)尚未找到确定一个合数的质因子的快速算法。
目前,日益激增的电子商务和其它因特网应用需求使公钥体系得以普及,这些需求量主要包括对服务器资源的访问控制和对电子商务交易的保护,以及权利保护、个人隐私、无线交易和内容完整性(如保证新闻报道或股票行情的真实性)等方面。公钥技术发展到今天,在市场上明显的发展趋势就是PKI与操作系统的集成,PKI是“Public Key Infrastructure”的缩写,意为“公钥基础设施”。公钥体制广泛地用于CA认证、数字签名和密钥交换等领域。
公钥加密算法中使用最广的是RSA。RSA算法研制的最初理念与目标是努力使互联网安全可靠,旨在解决DES算法秘密密钥的利用公开信道传输分发的难题。而实际结果不但很好地解决了这个难题;还可利用RSA来完成对电文的数字签名以抗对电文的否认与抵赖;同时还可以利用数字签名较容易地发现攻击者对电文的非法篡改,以保护数据信息的完整性。目前为止,很多种加密技术采用了RSA算法,该算法也已经在互联网的许多方面得以广泛应用,包括在安全接口层(SSL)标准(该标准是网络浏览器建立安全的互联网连接时必须用到的)方面的应用。此外,RSA加密系统还可应用于智能IC卡和网络安全产品。
2.2 RSA算法的编程思路
1)确定密钥的宽度。
2)随机选择两个不同的素数p处q,它们的宽度是密钥宽度的二分之一。3)计算出p和q的乘积n。
4)在2和Φ(n)之间随机选择一个数e , e 必须和Φ(n)互素,整数e用做加密密钥(其中Φ(n)=(p-1)*(q-1))。
5)从公式ed ≡ 1 mod Φ(n)中求出解密密钥d。6)得公钥(e,n), 私钥(d , n)。7)公开公钥,但不公开私钥。
8)将明文P(假设P是一个小于n的整数)加密为密文C,计算方法为: C = Pe mod n 9)将密文C解密为明文P,计算方法为:
P = Cd mod n 然而只根据n和e(不是p和q)要计算出d是不可能的。因此,任何人都可对明文进行加密,但只有授权用户(知道d)才可对密文解密
3.程序实现
本实验本采用C#语言,用Visual Studio下编程得到以下结果:
3.1
源程序如下:
using System;using System.Collections.Generic;using System.ComponentModel;using System.Data;using System.Drawing;using System.Linq;using System.Text;
using System.Windows.Forms;using System.IO;
namespace WindowsFormsApplication1 { public partial class Form1 : Form { public Form1(){ InitializeComponent();}
private void button1_Click(object sender, EventArgs e){ Form2 form = new Form2();form.Show();} private void Form1_Load(object sender, EventArgs e){ radioButton1.Checked = true;}
private void radioButton1_CheckedChanged(object sender, EventArgs e){ if(radioButton1.Checked == true){ label2.Text = “加密”;label3.Text = “E”;label5.Text = “请选择加密文件”;button2.Text = “加密”;} else { label2.Text = “解密”;label3.Text = “D”;label5.Text = “请选择解密文件”;button2.Text = “解密”;}
}
private void button3_Click(object sender, EventArgs e){ openFileDialog1.ShowDialog();textBox3.Text = openFileDialog1.FileName;} private void button2_Click(object sender, EventArgs e){ if(radioButton1.Checked == true){
if(textBox3.Text!= “"){ string pathstring = textBox3.Text, s1 = @”d:Code.txt“;if(File.Exists(pathstring)){ FileStream fileStream = File.OpenRead(pathstring);
try { StreamReader reader = new StreamReader(fileStream, System.Text.Encoding.Default);
while(!reader.EndOfStream){ string s = reader.ReadLine();int i, j;int m = Convert.ToInt32(textBox1.Text);int n = Convert.ToInt32(textBox2.Text);char[] a = new char[s.Length];for(i = 0;i < s.Length;i++){ j =(int)((s[i] ^(m))% n);a[i] = Convert.ToChar(j);if(File.Exists(s1)){ StreamWriter writer = new StreamWriter(s1, false, System.Text.Encoding.Default);writer.WriteLine(a);writer.Close();}}} reader.Close();} catch(Exception ex){ MessageBox.Show(ex.Message);} }
else
{ MessageBox.Show(”你要读的文件不存在“);} }
} if(radioButton2.Checked == true){ textBox3.Text = openFileDialog1.FileName;if(textBox3.Text!= ”“){ string pathstring = textBox3.Text, s1 = @”d:Info.txt“;if(File.Exists(pathstring)){ FileStream fileStream = File.OpenRead(pathstring);
try { StreamReader reader = new StreamReader(fileStream, System.Text.Encoding.Default);
while(!reader.EndOfStream){ string s = reader.ReadLine();int i, j;int m = Convert.ToInt32(textBox1.Text);int n = Convert.ToInt32(textBox2.Text);char[] a = new char[s.Length];for(i = 0;i < s.Length;i++){ j =(int)((s[i] ^(m))% n);a[i] = Convert.ToChar(j);if(File.Exists(s1)){ StreamWriter writer = new StreamWriter(s1,false, System.Text.Encoding.Default);writer.WriteLine(a);writer.Close();
}}} reader.Close();} catch(Exception ex){ MessageBox.Show(ex.Message);}}}}}}} 点击
得
源代码:
using System;using System.Collections.Generic;using System.ComponentModel;using System.Data;using System.Drawing;using System.Linq;using System.Text;using System.Windows.Forms;
namespace WindowsFormsApplication1 { public partial class Form2 : Form { public Form2(){ InitializeComponent();}
private void Form2_Load(object sender, EventArgs e)
{
}
private void label10_Click(object sender, EventArgs e){
}
private void textBox2_TextChanged(object sender, EventArgs e){ label13.Text = ”“;if(textBox2.Text!= ”“){ int m = Convert.ToInt32(textBox2.Text);int i, j;for(i = 2;i < m;i++){ if(m % i == 0){ label13.Text = ”不是质数,请重新输入!“;break;} } } try { label5.Text = ”输入的数与“ +(Convert.ToInt32(textBox1.Text)1)+ ”互质“;} catch { } }
private void button1_Click(object sender, EventArgs e){ int P = Convert.ToInt32(textBox1.Text);int Q= Convert.ToInt32(textBox2.Text);int N = P * Q;int R =(P-1)*(Q-1);int D = Convert.ToInt32(textBox3.Text);int I, E=0;for(I=2;I private void textBox1_TextChanged(object sender, EventArgs e){ label12.Text = ”“;if(textBox1.Text!= ”“){ int m = Convert.ToInt32(textBox1.Text);int i, j;for(i = 2;i < m;i++){ if(m % i == 0){ label12.Text = ”不是质数,请重新输入!";break;} } } } } } 3.2 加密过程: 选择 原文.txt 为要加密的文件,Code.txt 为密文,Info.txt 为经过解密的文件如图: 原文: 密文: 经过解密可得: 由上知该实验已顺利完成! 4.心得和体会 以上这些是我根据RSA的加密原理,自已通过编程,亲自体会而来。RSA算法本身比较简单,做一个实验的时候,遇到的困难主要是在编程,由于C#语言为面向对象的语言,具有良好的与用户接口,故采用这种语言。编程中在输入输出流这个地方出了一点问题,花了比较长的时候才把原因找到,并最终将程序完成.由于条件所限,在选取加密钥的时候,取数都比较小,实际应用中,数字会很大,但基本原理算法是一样的。 本实验仍有些不足,比如说,加密比较大的文件时,比较吃力,花费时间较多。 虽然有以上困难和问题,最终还是成功的将这个实验做成,在一定的程度上加强了编程能力和对RSA算法的认识。 湖南第一师范学院信息科学与工程系 题 目 学生姓名学 号专业班级指导教师 课程设计报告 中小型企业网络搭建 王欢 计网(1)班 王建军、李科峰 2010 年 6 月 8 日 03080130822 08 中小型企业网络搭建 一.需求分析 1.二.网络结构设计 1.网络技术选型 根据需求,采用以太网技术(快速以太网、交换式以太网、千兆位以太网)进行组网。 以太网技术:以太网的技术成熟、成本较低、互操作性强、易于使用和管理、可扩充性强.设计中利用到的其他技术如下: VLAN技术:控制广播风暴、提高网络整体安全性、网络管理简单、提高性能等优点。 第三层交换技术:一方面支持VLAN之间通信;另一方面交换技术减少了数据包的碰撞问题。支持VLAN的交换机配合第三层功能不但具有很高的性能,而且具有充分的弹性,因此,是最好的选择 网络的冗余技术:提高网络的可靠性;链路冗余既可提高可靠性,又能均衡负载; 缺点:不适应重负荷应用环境,实时性差,存在冲突域; 动态路由协议OSPF技术: STP技术: 以太网通道技术: 广域网技术(PPP协议): 2.网络拓扑设计 3.命令配置 1.基本信息配置 SW1的基本信息配置(SW2、RT1、RT3的基本配置与SW1相同)Switch>enable //进入特权模式 Switch#config terminal //进入全局配置模式 Switch(config)#hostname SW3 //配置主机名 SW1(config)#no ip domain-lookup //禁用域名查找 SW1(config)#line console 0 //进入Console线路模式 SW1(config-line)#logging synchronous //配置Console信息显示自动换行 SW1(config-line)#no login //配置口Console登录不认证 SW1(config-line)#privilege level 15 //配置为最高特权级别 SW1(config-line)#line vty 0 4 // 进入Vty线路模式 SW1(config-line)#no login //配置Telnet登录不认证 SW1(config-line)#privilege level 15 //配置为最高特权级别,enable不需要密码 //企业总部网络 2.二层网络全局配置(1)SW1的vlan配置 SW1(config)#vtp mode transparent//配置为透明模式 SW1(config)#vlan 8-12 SW1(config-vlan)#exit SW1#show vlan //查看vlan信息 (2)STP根网桥配置 SW1(config)#spanning-tree vlan 8 priority 0 SW1(config)#spanning-tree vlan 10 priority 0 SW2(config)#spanning-tree vlan 11 priority 0 (3)STP备份根网桥配置 SW1(config)#spanning-tree vlan 8 priority 4096 SW1(config)#spanning-tree vlan 11 priority 4096 SW2(config)#spanning-tree vlan 10 priority 4096 //按vlan编号来部署STP实现负载分担:SW1为vlan 8和vlan10的根网桥,vlan 11的备份根网桥;SW2则为vlan8和vlan10的备份根网桥,vlan 11的根网桥。 3.二层网络接口配置 (1)交换机SW1-SW2间链路捆绑 SW1(config)#interface range fa0/1-2 //以太网接口1和2,注意1后面要空格 SW1(config-if-range)#switchport trunk encapsulation dot1q SW1(config-if-range)#switchport mode trunk SW1(config-if-range)#switchport trunk allowed vlan all SW1(config-if-range)#channel-group 2 mode on//手动捆绑:组2 SW2(config)#interface range fa0/1-2 //以太网接口1和2,注意1后面要空格 SW2(config-if-range)#switchport trunk encapsulation dot1q SW2(config-if-range)#switchport mode trunk SW2(config-if-range)#switchport trunk allowed vlan all SW2(config-if-range)#channel-group 2 mode on//手动捆绑:组2 SW1#show etherchannel summary//查看以太网通道信息 (2)SW1的二层接口配置 SW1(config)#interface fa0/2 SW1(config-if)#switchport mode access SW1(config-if)#switchport access vlan 12 SW1(config-if)#spanning-tree portfast //配置成Portfast端口,加快收敛速度。 (3)SW2的二层接口配置 SW2(config)#interface fa0/10 SW2(config-if)#switchport mode access SW2(config-if)#switchport access vlan 10 SW2(config-if)#spanning-tree portfast //配置成Portfast端口,加快收敛速度。 SW2(config)#interface fa0/11 SW2(config-if)#switchport mode access SW2(config-if)#switchport access vlan 11 SW2(config-if)#spanning-tree portfast //配置成Portfast端口,加快收敛速度。 SW2(config)#interface fa0/12 SW2(config-if)#switchport mode access SW2(config-if)#switchport access vlan 11 SW2(config-if)#spanning-tree portfast //配置成Portfast端口,加快收敛速度。 (4)SW2的网管配置 SW2(config)#interface vlan 8 SW2(config-if)#ip address 192.168.8.130 255.255.255.128 SW2(config-if)#no shutdown SW2(config-if)#exit SW2(config)#ip default-gateway 192.168.8.129 SW1#show spanning-tree brief//查看STP简要信息 4.三层网络接口配置 (1)SW1的三层网络接口配置 SW1(config)#ip routing //启动三层交换机的路由功能 SW1(config)#interface vlan 8 //Vlan 8 的路由点 SW1(config-if)#ip address 192.168.8.129 255.255.255.128 SW1(config-if)#no shutdown SW1(config-if)#exit SW1(config)#interface vlan 10 //Vlan 10 的路由点 SW1(config-if)#ip address 192.168.10.1 255.255.255.0 SW1(config-if)#no shutdown SW1(config-if)#exit SW1(config)#interface vlan 11 //Vlan 11的路由点 SW1(config-if)#ip address 192.168.11.1 255.255.255.0 SW1(config-if)#no shutdown SW1(config-if)#exit SW1(config)#interface vlan 12 //Vlan 12的路由点 SW1(config-if)#ip address 192.168.12.1 255.255.255.0 SW1(config-if)#no shutdown SW1(config-if)#exit SW1#show ip int brief //查看接口简要信息 (2)SW1-RT1的三层链路配置 SW1(config)#interface fa0/3 //上连接口:上连RT的E0/0 SW1(config-if)#no switchport //配置接口为三层接口 SW1(config-if)#ip address 192.168.1.1 255.255.255.248 SW1(config-if)#no shutdown RT1(config)#interface ethernet 1/1 RT1(config-if)#ip address 192.168.1.2 255.255.255.248 RT1(config-if)#no shutdown SW1#show ip interface brief //查看接口简要信息,查看接口是否配置成功。RT1#show ip interface brief //查看接口简要信息,查看接口是否配置成功。SW1#ping 192.168.1.2//ping 对端,检测链路是否连通。RT1#ping 192.168.1.1//ping 对端,检测链路是否连通。 5.边界网络对接(静态路由配置) SW1(config)#ip route 0.0.0.0 0.0.0.0 192.168.1.2 RT1(config)#ip route 192.168.0.0 255.255.0.0 192.168.1.1 //企业分部网络 6.RT1的Loopback0配置、局域网接口配置及测试 RT1(config)#interface loopback 0 //配置回环接口 0 RT1(config-if)#ip address 192.168.0.1 255.255.255.255//配置回环接口的IP地址 RT1(config)#interface ethernet 1/2//配置局域网接口 RT1(config-if)#ip address 192.168.2.1 255.255.255.0 RT1(config-if)#no shutdown//开启端口 RT1(config-if)#exit RT1#show ip int brief //查看所有接口的信息 7.RT3的Loopback0配置、局域网接口配置及测试 RT3(config)#interface loopback 0 //配置回环接口 0 RT3(config-if)#ip address 192.168.0.3 255.255.255.255//配置回环接口的IP地址 RT3(config)#interface ethernet 1/3//配置局域网接口 RT3(config-if)#ip address 192.168.3.1 255.255.255.0 RT3(config-if)#no shutdown//开启端口 RT3(config-if)#exit RT3show ip int brief //查看所有接口的信息 8.RT1-RT3的广域网链路配置及测试 RT1(config)#interface serial 0/0 RT1(config-if)#clock rate 1000000 //DCE端配置时钟速率,1Mbps RT1(config-if)#bandwith 1000 //接口逻辑带宽,用于计算接口的开销值,单位kbps;在实际项目中,接口逻辑带 宽应配置成与接口物理带宽一致且两端的bandwith 必须一致。RT1(config-if)#encapsulation ppp //配置数据链路层封装 RT1(config-if)#ip address 192.168.0.1 255.255.255.252 RT1(config-if)#no shutdown //打开接口 RT1(config-if)#end RT3(config)#interface serial 0/0 RT3(config-if)#bandwith 1000 //接口逻辑带宽,用于计算接口的开销值,单位kbps;在实际项目中,接口逻辑带 宽应配置成与接口物理带宽一致且两端的bandwith 必须一致。RT3(config-if)#encapsulation ppp//配置数据链路层封装 RT3(config-if)#ip address 192.168.0.3 255.255.255.252 RT3(config-if)#no shutdown RT3(config-if)#end RT1#show ip interface brief //查看接口简要信息 RT3#show ip interface brief //查看接口简要信息 9.OSPF路由配置 (1)RT1的OSPF配置 RT1(config)#router ospf 1 //开启OSPF进程1,标识不同的OSPF的进程。RT1(config-router)#router-id 1.1.1.1 //手动配置OSPF Router-ID RT1(config-router)#network 192.168.0.1 0.0.0.0 area 0//发布Loopback 0。这里的0.0.0.0是采用的反掩码形式表是,area 0表示骨干区域。RT1(config-router)#network 192.168.1.0 0.0.0.7 area 0 RT1(config-router)#network 192.168.0.4 0.0.0.3 area 0 RT1(config-router)#network 192.168.2.0 0.0.0.255 area 0 RT1(config-router)#passive-interface e2/1 //为业务网段配置被动接口 RT1(config-router)#passive-interface e1/1 (2)RT3的OSPF配置 RT3(config)#router ospf 1 //开启OSPF进程1,标识不同的OSPF的进程。RT3(config-router)#router-id 3.3.3.3 //手动配置OSPF Router-ID RT3(config-router)#network 192.168.0.3 0.0.0.0 area 0//发布Loopback 0。这里的0.0.0.0是采用的反掩码形式表是,area 0表示骨干区域。RT3(config-router)#network 192.168.0.4 0.0.0.3 area 0 RT3(config-router)#network 192.168.3.0 0.0.0.255 area 0 RT3(config-router)#passive-interface e3/1 //为业务网段配置被动接口 3.子网划分及IP分配方案 4.网络服务器规划 三.网络设备选型 四.网络软件选型 南 华 大 学 网 络 安 题目:RSA加解密算法 姓名 学号: 导师: 全 非对称加密算法的实现 非对称密码系统即公钥密码系统,主流分为基于大整数分解难度,基于离散 一、设计内容、算法原理 对数计算难度和椭圆曲线公钥密码三类。本次实验主要介绍RSA、ELG加密。 二、RSA 1).RSA公钥密码算法原理和过程: Alice要求Bob将信息m用RSA方法加密传送回来,Alice找到大素数p,q, 令n=pq, 取a>1满足(a,(n))1,再找d使得da1(mod(n)),然后 Alice将n、a作为加密密钥(公钥)发送给Bob, 这里p,q,d,(n)都是私钥,要求保密,用作解密。 Bob 将原文m< 这里大素数要求足够大,通常要求是大于100位的十进制数。有资料表明,几十位的素数构造的RSA公钥密码系统是不安全的。因为位数较多,加密效率就不 dd并将密文m(modn),aadadEA传送给 Alice。 得到原文 DA(EA)EA(m)mm(n)k1m(modn)够高,因此,通常用来加密对称密码的密钥,例如,加密序列密码的密钥。 Maple简介:Maple是一个具有强大符号运算能力、图形处理能力的交互式计算机代数系统,它可以进行各种科学计算和数学推理,它的高精度数值计算能力对于处理大数的计算和素性判定有其独特的功能。它适合于所有需要科学计算的人.。 RSA算法可以实现数字签名。B向A进行签名,则 1、B不能否认进行了签名 2、A不能篡改B的签名 设A(如网站)的公钥为EA,私钥为DA B(签名者)的公钥为 EB,私钥为DB,B的原文m, B用DB作用m , 得到DB(m),再用A提供的EA作用,得到 EA(DB(m))C,B将C和EB发给A, A收到后,先用DA作用于C再用EB作用 EB(DA(C))B不能否认进行了签名,因为AEB(DA(EA(DB(m))。)这时,m用B提供的EB算出;A不能篡改B的签名,因为B可以用A提供的EA和DB算出,而A不知道DB,改动后算不出上面等式。2)、RSA公钥密码算法程序流程 1、A的准备工作 (1)产生两个u到v位的随机数,如果是偶数,则加1,然后判别是否是素数,如果是,赋值给p,q(2)令n=pq, t=(p-1)(q-1);(3)找1amin{p1,q1} 满足(a,t)1,找一个不能整除t的素数,依次试除。 (4)解ax1(modt)相当于求解 tyax1,将 t,a辗转相除,得到 n利用P01,P1q1,PkqkPk1Pk2,x(1)Pn,再除以q1,q2,,qn,给d(5)将公钥 n,a发送给B 2、B的加密过程 t,再赋值(1) 原文m长度设为56位,远小于n,保证了(m, n)=1, 加密得到密文sm(modn),分am为十进制数字和字符串两种情况 (2)将密文s传送给 A。 3、A的解密过程 A收到s后,计算 先分别求解 dms(modn)dd得到原文m。直接计算速度太慢,且溢出,b1s(modp,)b2s(modq),然后利用孙子定理解同余式组 xb1(modp),xb2(modq),它的解xM1M1'b1M2M2'b2(modn)就是原文。 2反复利用 d[d]r来计算 m(modp)可以大大加快运行速度。 d3)、基于RSA算法的数字签名程序流程 B向阿A进行数字签名。只需A和B都拥有密钥生成、加密和解密程序。A运行密钥生成程序,将公钥EA ={n,a}发给B, 将私钥DA密。 B运行密钥生成程序,将公钥EB ={n1,a1}发给A, 将私钥DB保密。 B计算 签名m< A收到后,先计算DA(C)(C)d(DB)(ma1d1{p,q,d,(n)}保 {p1,q1,d1,(n1)}再计算C(DB)(modn)并m(modn1),d1a((DB))DBadadDB(n)k1再计算 DB(modn),)ma1a1d1m(n1k)得到签名m(modn1)1m。 三、ELG 四、设计过程、设计的特点和结果、心得 1)、密钥生成 选出一个大素数 p 选出 d 作为群G < Zp*, >中的一个成员,使得 1 d p 2 选出 e1作为群 G < Zp*, > 中的一个本原根 e2 e1d mod p C 2P e2r)mod p // C1和C2是密文 Public_key (e1, e2, p)// 公开宣布 Private_key d //保密 2)、解密 P C2(C1d)1] mod p // P 是明文 3)、证明 C2(C1d)1] mod p =P e2r)(e1dr)1 mod p = P 五、实现环境 Windows xp Maple13 + mapletoolbox+matlab 混合编程 六、编写的源程序代码 1、RSA_System RSA_SYSTEM.m function varargout = RSA_SYSTEM(varargin) gui_Singleton = 1; gui_State = struct('gui_Name', mfilename,...'gui_Singleton', gui_Singleton,...'gui_OpeningFcn', @RSA_SYSTEM_OpeningFcn,...'gui_OutputFcn', @RSA_SYSTEM_OutputFcn,...'gui_LayoutFcn', [] ,...'gui_Callback', []);if nargin && ischar(varargin{1}) gui_State.gui_Callback = str2func(varargin{1});end if nargout [varargout{1:nargout}] = gui_mainfcn(gui_State, varargin{:});else gui_mainfcn(gui_State, varargin{:});end function RSA_SYSTEM_OpeningFcn(hObject, eventdata, handles, varargin) handles.output = hObject;X = imread('back.jpg'); subplot('position',[-0.00,-0.3,1.0,1.6]);imagesc(X);colormap(gray);axis image off; guidata(hObject, handles); function varargout = RSA_SYSTEM_OutputFcn(hObject, eventdata, handles)varargout{1} = handles.output; function primeP_Callback(hObject, eventdata, handles) function primeP_CreateFcn(hObject, eventdata, handles)if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))set(hObject,'BackgroundColor','white');end function primeQ_Callback(hObject, eventdata, handles) function primeQ_CreateFcn(hObject, eventdata, handles)if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))set(hObject,'BackgroundColor','white');end function phN_Callback(hObject, eventdata, handles) function phN_CreateFcn(hObject, eventdata, handles)if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))set(hObject,'BackgroundColor','white');end function publicN_Callback(hObject, eventdata, handles) function publicN_CreateFcn(hObject, eventdata, handles)if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))set(hObject,'BackgroundColor','white');end function PruducPrime_Callback(hObject, eventdata, handles) P=maple('nextprime(rand(10^120)())');Q=maple('nextprime(rand(10^120)())');N=P*Q; phN=(Q-1)*(P-1); set(handles.primeP,'String',char(P))set(handles.primeQ,'String',char(Q))set(handles.publicN,'String',char(N))set(handles.phN,'String',char(phN))set(handles.Private_Key,'Enable','on');set(handles.Selecte_String,'Enable','on');set(handles.SelecteNum,'Enable','on');%计算私钥d global d e e=2^16+1;format rat E=1/e;setmaple('e',e);setmaple('E',E);setmaple('n2',phN);setmaple('n',N); d=maple('convert(E,rational)mod n2');setmaple('d',d); function SelecteNum_Callback(hObject, eventdata, handles) [FileName,PathName,FilterIndex] = uigetfile;if FilterIndex~=0 global m im=importdata(strcat(PathName,FileName));is=isa(im,'cell');if is==0 m=csvread(strcat(PathName,FileName));set(handles.Num_Secret,'Enable','on');end if is==1 msgbox('请选择数字型文件!','警告:');end end function Num_Secret_Callback(hObject, eventdata, handles) fidout=fopen('密文.txt','w');global m for i=1:length(m)M=m(i); setmaple('m',M); C=maple('Power(m,e)mod n'); fprintf(fidout,'%snn',char(C)); end msgbox('恭喜!你已成功加密,产生文件为“密文.txt”','温馨提示:');set(handles.Num_CodeBreak,'Enable','on'); function Num_CodeBreak_Callback(hObject, eventdata, handles) %以下是解密过程 fidin=fopen('密文.txt');fidout=fopen('明文.txt','w'); while ~feof(fidin) % 判断是否为文件末尾 tline=fgetl(fidin); % 从文件读行 if isempty(tline)==0 %若该行非空 midvar=sscanf(tline,'%f'); setmaple('C',tline); m=maple('Power(C,d)mod n') fprintf(fidout,'%snn',char(m)); end continue % 如果是非数字继续下一次循环 end fclose(fidout); msgbox('恭喜!你已成功解密,产生文件为“明文.txt”','温馨提示:');set(handles.Num_CodeBreak,'Enable','off');set(handles.Num_Secret,'Enable','off'); function Selecte_String_Callback(hObject, eventdata, handles) [FileName,PathName,FilterIndex] = uigetfile;if FilterIndex~=0 global path path=strcat(PathName,FileName); set(handles.String_Secret,'Enable','on');end function String_Secret_Callback(hObject, eventdata, handles) global path a=importdata(path,'%s');is=isa(a,'double');if is ~= 1 b=cell2mat(a);mm=double(b); fidout1=fopen('密文1.txt','w');for i=1:length(mm)M=mm(i); setmaple('m',M); C=maple('convert((Power(m,e)mod n),binary)');fprintf(fidout1,'%snn',char(C)); end msgbox('恭喜!你已成功加密,产生文件为“密文1.txt”','温馨提示:');set(handles.String_CodeBreak,'Enable','on');end if is==1 msgbox('请选择字符型文件!','警告:');set(handles.String_Secret,'Enable','off');end function String_CodeBreak_Callback(hObject, eventdata, handles) fidin=fopen('密文1.txt');fidout=fopen('明文1.txt','w'); while ~feof(fidin) % 判断是否为文件末尾 tline=fgetl(fidin); % 从文件读行 if isempty(tline)==0 %若该行非空 midvar=sscanf(tline,'%f'); setmaple('C',tline); m=maple('Power(convert(C,decimal,binary),d)mod n'); m=double(m); m=char(m); fprintf(fidout,'%s',m); end continue % 如果是非数字继续下一次循环 end fclose(fidout); msgbox('恭喜!你已成功解密,产生文件为“明文1.txt”','温馨提示:');set(handles.String_CodeBreak,'Enable','off');set(handles.String_Secret,'Enable','off'); function Private_Key_Callback(hObject, eventdata, handles)global d set(handles.privateKey,'String',char(d)); function privateKey_Callback(hObject, eventdata, handles) function privateKey_CreateFcn(hObject, eventdata, handles)if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))set(hObject,'BackgroundColor','white');end %------function Open_Callback(hObject, eventdata, handles)uiopen; %------function Close_Callback(hObject, eventdata, handles)close(gcf); %------function ELG_Callback(hObject, eventdata, handles)ELG_SYSTEM delete(handles.RSA_SYSTEM); 2、ELG_System ELG_SYSTEM.m function varargout = ELG_SYSTEM(varargin) gui_Singleton = 1; gui_State = struct('gui_Name', mfilename,...'gui_Singleton', gui_Singleton,...'gui_OpeningFcn', @ELG_SYSTEM_OpeningFcn,...'gui_OutputFcn', @ELG_SYSTEM_OutputFcn,...'gui_LayoutFcn', [] ,...'gui_Callback', []);if nargin && ischar(varargin{1}) gui_State.gui_Callback = str2func(varargin{1});end if nargout [varargout{1:nargout}] = gui_mainfcn(gui_State, varargin{:});else gui_mainfcn(gui_State, varargin{:});end function ELG_SYSTEM_OpeningFcn(hObject, eventdata, handles, varargin) handles.output = hObject;X = imread('key.jpg'); subplot('position',[-0.00,-0.4,1.4,1.7]);imagesc(X);colormap(gray);axis image off; guidata(hObject, handles); function varargout = ELG_SYSTEM_OutputFcn(hObject, eventdata, handles) varargout{1} = handles.output; %------function Open_Callback(hObject, eventdata, handles) uiopen; %------function Close_Callback(hObject, eventdata, handles) close(gcf); %------function RSA_Callback(hObject, eventdata, handles) RSA_SYSTEM delete(handles.ELG_SYSTEM); function primeP_Callback(hObject, eventdata, handles) function primeP_CreateFcn(hObject, eventdata, handles) if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))set(hObject,'BackgroundColor','white');end function public_ha_Callback(hObject, eventdata, handles) function public_ha_CreateFcn(hObject, eventdata, handles) if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))set(hObject,'BackgroundColor','white');end function Produce_PublicKey_Callback(hObject, eventdata, handles) function ProduecPublicKey_Callback(hObject, eventdata, handles) global xa p ha p=maple('m := proc(n)global a, q;for a do q := nextprime((rand(10^n))());if isprime(4*q+1)= true then break end if end do;4*q+1 end proc;m(150)');setmaple('p',p); set(handles.primeP,'String',char(p));xa=maple('rand(10^100)()');setmaple('xa',xa); ha=maple('2 &^ xa mod p');setmaple('ha',ha); set(handles.public_ha,'String',char(ha));set(handles.PrivateOut,'Enable','on');set(handles.Select_String,'Enable','on');set(handles.Select_Num,'Enable','on'); function Select_Num_Callback(hObject, eventdata, handles) [FileName,PathName,FilterIndex] = uigetfile;if FilterIndex~=0 global m im=importdata(strcat(PathName,FileName));is=isa(im,'cell');if is==0 m=csvread(strcat(PathName,FileName));set(handles.Code_Num,'Enable','on');end if is==1 msgbox('请选择数字型文件!','警告:');end end function Code_Num_Callback(hObject, eventdata, handles) fidout=fopen('密文.txt','w');global m for i=1:length(m)M=m(i); setmaple('m',M); k=maple('rand(10^150)()');setmaple('k',k);U=maple('2 &^ k mod p');v=maple('ha &^ k mod p');setmaple('v',v);V=maple('m*v mod p'); fprintf(fidout,'%sn',char(U));fprintf(fidout,'%snn',char(V));end msgbox('恭喜!你已成功加密,产生文件为“密文.txt”','温馨提示:');set(handles.Break_Num,'Enable','on'); function Break_Num_Callback(hObject, eventdata, handles) %以下是解密过程 fidin=fopen('密文.txt');fidout=fopen('明文.txt','w'); while ~feof(fidin) % 判断是否为文件末尾 tline=fgetl(fidin); % 从文件读行 if isempty(tline)==0 %若该行非空 t1line=''; midvar=sscanf(tline,'%f'); t1line=tline; tline=fgetl(fidin); midvar=sscanf(tline,'%f'); setmaple('C1',t1line); setmaple('C2',tline); m=maple('convert(C2/C1 &^ xa, rational)mod p'); fprintf(fidout,'%snn',char(m)); end continue % 如果是非数字继续下一次循环 end fclose(fidout); msgbox('恭喜!你已成功解密,产生文件为“明文.txt”','温馨提示:');set(handles.Code_Num,'Enable','off');set(handles.Break_Num,'Enable','off'); %---Executes on button press in Select_String.function Select_String_Callback(hObject, eventdata, handles) [FileName,PathName,FilterIndex] = uigetfile;if FilterIndex~=0 global path path=strcat(PathName,FileName); set(handles.Code_String,'Enable','on');end %---Executes on button press in Code_String.function Code_String_Callback(hObject, eventdata, handles) global path a=importdata(path,'%s');is=isa(a,'double');if is ~= 1 b=cell2mat(a);mm=double(b); fidout1=fopen('密文1.txt','w');for i=1:length(mm)M=mm(i); setmaple('m',M); k=maple('rand(10^150)()');setmaple('k',k); U=maple('convert(2 &^ k mod p,binary)');v=maple('ha &^ k mod p');setmaple('v',v); V=maple('convert(m*v mod p,binary)');fprintf(fidout1,'%sn',char(U)); fprintf(fidout1,'%snn',char(V)); end msgbox('恭喜!你已成功加密,产生文件为“密文1.txt”','温馨提示:');set(handles.Break_String,'Enable','on');end if is==1 msgbox('请选择字符型文件!','警告:'); set(handles.Break_String,'Enable','off');end %---Executes on button press in Break_String.function Break_String_Callback(hObject, eventdata, handles) fidin=fopen('密文1.txt');fidout=fopen('明文1.txt','w'); while ~feof(fidin) % 判断是否为文件末尾 tline=fgetl(fidin); % 从文件读行 if isempty(tline)==0 %若该行非空 t1line=''; midvar=sscanf(tline,'%f'); t1line=tline; tline=fgetl(fidin); midvar=sscanf(tline,'%f'); setmaple('C1',t1line); setmaple('C2',tline); % m=maple('Power(convert(C2,decimal,binary),d)mod n'); m=maple('convert(convert(C2,decimal,binary)/convert(C1,decimal,binary)&^ xa, rational)mod p'); m=double(m); m=char(m); fprintf(fidout,'%s',m); end continue % 如果是非数字继续下一次循环 end fclose(fidout); msgbox('恭喜!你已成功解密,产生文件为“明文1.txt”','温馨提示:');set(handles.Code_String,'Enable','off');set(handles.Break_String,'Enable','off'); %---Executes on button press in PrivateOut.function PrivateOut_Callback(hObject, eventdata, handles) global xa set(handles.Private_Key,'String',char(xa)); function Private_Key_Callback(hObject, eventdata, handles) function Private_Key_CreateFcn(hObject, eventdata, handles) if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))set(hObject,'BackgroundColor','white');end 附:RSA运行演示(ELG类似) 中小型单位网络规划方案 中小型单位网络规划方案...............................................................................................................1 一. 概述.........................................................................................................................................2 二. 设计目标.................................................................................................................................2 三. 设计原则.................................................................................................................................2 四.用户需求分析............................................................................................................................3 五. 网络规划设计总体方案.........................................................................................................4 六. 设备数目与价格明细表.......................................................................................................12 七. 子网划分...............................................................................................................................13 八.推荐教材及主要参考资料.....................................................................................................13 一. 概述 激烈的市场环境,尤其在我国加入WTO后使中国的中小企业日益暴露出自身的劣势.除了资金、技术、人才、渠道建设、营销等方面外,中小企业还存在经营管理低效、信息获取落后,IT应用程度普遍低下的现象,很难适应信息化社会的发展。为提高企业竞争力,需要实现企业信息化,中小型规模局域网建设的成了企业提高竞争力信息化工具。 面向21世纪计算机网络发展的总体目标就是要在各个国家、进而在全球建立完善的信息基础设施。信息基础设施将改变人们的生活、学习、工作、人际交往的方式,减轻人们的工作负担,推动社会的进步。网络体系结构是计算机之间相互通信的层次,各层中的协议以及层次之间接口的集合。网络协议是计算机网络和分布系统中相互通信的对等实体间交换信息所必须遵守的规则集合。采用TCP/IP协议集成的网络体系结构是计算机网络体系结构的主流,并在改进和发展中。协议工程是一门研究如何设计和构造协议规范,以及如何把所设计和构造的协议规范快速、准确、低成本地转化为可执行代码的科学。1993年美国制定了信息高速公路(即国家信息基础设施NII)后,各国都相继规划和实施NII计划。计算机网络发展有两个重要的技术,即微电子技术和光技术。当前网络发展的趋势是电信网、电视网、计算机网三种网络的合一。在三网合一中,采用Internet体系结构和IP协议时应提高网络的可靠性,目前数据网的可靠性达99.996%。 二. 设计目标 1.配合当前的单位发展情况,完成单位内部Internet的配套基础建设,将单位的信息资源利用计算机网络连接起来,形成一个流畅、合理、可靠、安全的单位网。2.通过网络使单位人员能及时了解国内外动态,建立新的通讯方式和环境,提高工作效率。 三. 设计原则 1.单位需求为前提原则:坚持以单位具体需求为单位网信息系统方案设计的根本和前提,同时,也要注重源于需求又高于需求的原则,注意用专业化的技术思想来进行单位网的规划与设计,确保单位网的实用性、先进性和便于扩展性。 2.设备选型兼顾原则:满足单位对现代化管理手段的要求;满足单位网建设及互联网的要求;所选设备在国际上保持技术先进性;供应商有良好的商业信誉和优质的售后服务。3.坚持标准原则:一切单位网设计和施工,均要严格遵循国际和国家标准。统一规划,分步实施。单位网的实现要求通讯协议、网络平台等应具有世界性的开放性和标准化的特点,并且应采用统一的网络体系结构。 4.坚持先进的成熟的技术原则:采用通用的、成熟的技术方案可以降低建设成本、减小设计、施工和使用难度、缩短建设周期。有利于保护投资,并且有利于单位网的维护和升级。选择品质最好的设备不一定是最佳选择,成本因素也是一个不容忽视的问题,将品质与成本实现最佳匹配。 5.坚持规范布线,考虑长远发展原则: 布线系统使网络的重要基础,布线系统的好坏是衡量一个网络好坏的非常重要的标志。布线系统不合理将降低网络的可靠性,使网络难以管理和维护,所以必须采用标准的综合布线系统。 6.坚持易于使用和管理原则: 单位网的各种软件应用项目必须易于使用,对最终用户的起点要求不能太高,一般以熟练使用操作系统、办公软件系统、浏览器和电子邮件系统为宜;系统的日常管理和维护工作要方便、简易。网络拓扑结构一经配置确定,不应轻易更改。 7.坚持可扩展性原则:考虑现有网络的平滑过度,使单位现有陈旧设备尽量保持较好的利用价值;选用产品应具有最佳性价比,又要应充分考虑未来可能的应用,具有高扩展性。 四.用户需求分析 龙翔实业需要建立网络以提高办公效率,该单位共有7个部门,分别为:人事部,财务部,研发部,办公室,后勤部,业务部,生产部。每个部门均需要建立内部网络,同时都需要和Internet相连。各部门对上网的计算机的需求如下: 生产部:60台 研发部:50台 其余5个部门均为30台。 生产部主要使用内网;业务部主要使用外网,要求上网速度快;财务部主要使用外网,除要求上网速度快之外,还要求保密程度高;研发部主要使用内网,要求计算机工作速度快。其他各部门没有特殊要求。 目前已经申请到一个B类网络:141.18.0.0/16。 请根据该单位的特点和要求,帮助该单位设计一个网络,具体要求如下: 1、针对需求单位的特点,写出可行性报告。 2、对目前广泛流行的各种计算机网络进行比较,根据单位的实际情况选出合理方案,给出拓扑图,并力求做到最优。 3、根据需要进行子网划分,并为每一个部门分配IP地址段。 4、给出设备清单,做好预算。 5、要保证网络的健壮性、可维护性、可扩展性,给出相应的措施。 五. 网络规划设计总体方案 (一)单位网络拓扑图 (二)设计方案 1.网络层次结构 网络结构采用分层式设计,共分三层:核心层,工作组层,桌面接入层。分层设计可以使整个网络自上而下具有很大的弹性,便于策略的维护和实施。](1)核心设备 ①设备名称:DCS-3926S可堆叠智能安全接入交换机 ②基本介绍: 3926S具有24个10/100Mbps自适应RJ-45端口和2个模块扩展插槽(可选插百兆模块和千兆模块)可千兆或百兆聚合上联至汇聚层交换机或者核心层交换机。 ③主要特征: ★高密度和灵活的堆叠 DCS-3900S系列的堆叠带宽可支持2G到4G,并且支持简单堆叠、标准堆叠、超级堆叠和混合堆叠。简单堆叠成本最低。堆叠带宽2G;标准堆叠使用堆叠模块,其带宽扩充至4G;还可以用千兆电口或千兆光口做超级堆叠,可避开堆叠线缆的限制,堆叠带宽也是4G;同时DCS-3900S系列可以和DCRS-5600S系列、DCRS-5526S交换机做混合堆叠。 ★强大的ACL功能 作为新款的L2/4交换机,DCS-3926,S系列交换机提供了完整的ACL策略,可根据源/目的IP地址、源/目的MAC地址IP协议类型、TCP/UDP端口号、IP Precendence、时间范围、ToS对数据进行分类,并进行不同的转发策略。通过ACL策略的实施,用户可以在接入层交换机过滤掉“冲击波”、“震荡波”、“红色代码”等病毒包,防止扩散和冲击核心设备 ★卓越的安全特性 全面的受控组播方案DMCP,可以对源和目的进行安全控制,完整实现了在接入层网络中基于IGMP源端口和目的端口的检查技术,可完全限制合法组播在网络中的稳定传输,有效控制组播建立的整个过程,保障了正常合法的组播应用的稳定运行;率先支持对特征复杂(64字节)的应用流量的访问控制,让用户可以在各种网络的环境中应对出现复杂情况;监控pingSweep等攻击行为,安全防扫描,并采取防攻击措施,全面保护交换机和服务器等网络设施的安全。 ★更完美的性价比(DCS-3926S-G) 大多数接入交换机通过1个千兆光模块上联,为了提高产品的性价比,DCS-3926S-G固化了一个千兆光模块,可以为用户节约开支。 ★丰富的QoS策略 DCS-3900S系列交换机为每个端口提供了4个优先级队列,可根据端口、802.1p、ToS、DSCP、TCP/UDP端口进行流量分类,并分配不同的服务级别,支持WRR/SP等调度方式,为语音/数据/视频在同一网络中传输提供所要求的不同服务质量。 ④技术参数 ★接口形式:24个10/100M端口+ 1个SFP千兆光口/堆叠口 ★可选扩展模块:百兆电/光口模块;千兆电/光口模块;堆叠模块 ★堆叠:支持标准堆叠,超级堆叠,混合堆叠。堆叠环境下,支持跨交换机的端口聚合、端口镜像、QoS、ACL ★生成树:802.1D(STP)、802.1w(RSTP)、802.1s(MSTP) ★组播协议:IGMP Snooping&Query ★QoS:每端口4个队列,支持802.1p,ToS,应用端口号,DifferServ,支持WRR/SP等调度方式 ★ACL:支持标准ACL和扩展ACL,支持IP ACL、MAC ACL、IP-MAC ACL,支持基于源/目的IP地址、源/目的MAC地址、IP协议类型、TCP/UDP端口号、IP Precendence、时间范围、ToS对数据进行过滤。 ★端口聚合:支持802.3ad,最大可支持6组trunk,每trunk可到8个端口,支持基于目的MAC的负载均衡。 ★IEEE802.1x:支持基于端口和MAC地址,支持神州数码802.1x整体解决方案,可以实现按时长/流量计费,可以实现用户帐号、密码、IP、MAC、VLAN、端口、交换机的严格绑定,可以防止代理软件,防止PC克隆,对客户发送通知/广告,上网时段控制,基于用户动态实现VLAN授权和带宽授权,可基于组策略实现动态IP地址分配而不必使用DHCP服务器等。 ★认证:支持RADIUS ★端口镜象:支持。 ★支持的网络标准:IEEE802.1D IEEE 802.3 IEEE 802.3u IEEE802.3ad IEEE 802.3x IEEE 802.3z IEEE802.1Q IEEE 802.1p IEEE 802.1x IEEE802.1w IEEE 802.1s等堆叠。 (2)工作组设备 ①设备名称:DCS-3726S 24口+2槽可堆叠网管10/100/1000M以太网交换机 ②基本介绍:DCS-3726S是神州数码网络专为校园网互连设计的一款可网管交换机,可堆叠使用提供很高的端口密度,适用于企业大中型网络组网。它具有24个10/100Mbps自适应RJ-45端口和2个模块扩展插槽(可选插百兆光纤模块或千兆模块),可千兆或百兆上联至骨干网。DCS-3726S提供有端口限速功能,使用灵活方便。该交换机还可以下接最多24台其他交换机实现级联以扩展端口数目。它还支持VLAN、组播、优先级、端口聚合和端口镜像等实用网络功能,而且还提供了18Gbps的背板带宽,实现了数据的全线速转发,消除了网络瓶颈,为多用户接入提供了高性能的网络解决方案。 ③主要特征: ★24个10/100Base-TX端口 DCS-3726S具有24个固定的10/100Base-TX端口。这些端口均支持Nway标准,可支持10/100Base-TX自适应及全双工/半双工。 ★2个千兆端口 DCS-3726S交换机前面板具有2个插槽,可选插1口百兆模块或千兆模块,千兆模块可支持1000Base-SX、1000Base-LX和1000Base-T标准。所有模块支持流量控制和全双工,可处理大量数据。千兆端口可将部门网络与千兆主干网络连接起来,也可以连接高性能服务器,使得更多用户可以同时访问。 ★100Base-FX模块 DCS-3726S插槽可以选插1口100Base-FX(SC)短波或长波模块,运行于全双工模式下,可以应用于高电磁干扰或通信保密性要求高的场合,通常应用于远距离传输。 ★大型堆叠,多达 192个10/100Base-TX端口 DCS-3726S交换机最多可以堆叠8台设备,堆叠组最多可达192个10/100Base-TX端口,使得网络可以灵活扩展,并能够有效减少网络层次,便于大型社区内大量用户的互联接入。 ④技术参数 ★端口聚合(Port Trunking) DCS-3726S支持端口聚合功能,同时支持802.3ad的标准。可将2/3/4个10/100Base-TX端口聚合成一条干路,每条干路支持全双工模式,交换机最多支持6组端口聚合。 ★生成树(Spanning Tree) DCS-3726S支持多种生成树功能,如:802.1D、802.1w、802.1s。Spanning Tree协议可使LAN自动检测并解决环路问题,可提供链路的备份。802.1D为基本的Spanning Tree协议,缺省操作模式是开启状态。DCS-3726S同时支持802.1w快速生成树模式,可使收敛时间缩短至几秒内。IEEE 802.1s可使IEEE Std 802.1Q的VLAN加入到多个生成树中,即提供spanning tree per VLAN的功能。 ★虚拟网络(VLAN) 支持虚拟网络(VLAN)标准来控制广播域和网段流量,可以提高网络性能、安全性和可管理性。DCS-3726S支持IEEE 802.1q VLAN标记,可基于端口地址来划分VLAN,最多256个VLAN。通过控制口或网管工作站可以轻松完成结构和设备的添加、移动和更换。可根据最大网络流量和网络安全性来划分虚拟网络。DCS-3726S同时支持GVRP协议,可实现VLAN组成员动态注册,支持基于端口的VLAN划分管理方式,支持动态VLAN。生成树:802.1D(STP)、802.1w(RSTP)、802.1s(MSTP) ★MAC地址过滤:自动学习; 动态和静态地址过滤 ★管理功能 : 端口安全 ; Bootp、DHCP客户 ; 配置文件上载 /下载 ; TFTP固件升级 (3)桌面接入层设备 ①设备名称:神州数码 DCS-1024普通交换机 ②技术参数 ★交换机类型:普通交换机 ★传输速率(Mbps):10Mbps/100Mbps ★网络标准:IEEE802.3 10BASE-T 以太网;IEEE802.3u 100BASE-TX 快速以太网;IEEE802.3x流量控制 ★网络协议:CSMA/CD ★ 接口介质:10BASE-T: 2对3,4或5类非屏蔽双绞线(UTP)(≤100m); EIA/TIA-568 100欧屏蔽双绞线(STP)(≤100m)。100BASE-TX: 2对或4对5类非屏蔽双绞线(UTP)(≤100m); EIA/TIA-568 100欧屏蔽双绞线(STP)(≤100m) ★传输模式:全双工/半双工自适应 ★其他技术参数:数据传输速率:以太网:10Mbps(半双工);20Mbps(全双工)快速以太网:100Mbps(半双工);200Mbps(全双工)拓扑结构:星型 MAC地址表:8K 最大包过滤/转发率:每端口14,880pps(10Mbps);每端口148,800pps(100Mbps)RAM缓冲:2.5M 2.链路设计(包括综合布线详细说明) (1)财务部:核心交换机DCS-3926S通过一个千兆口有1000BASE-T4对超五类STP下连服务器,通过一个千兆口由1000BASE-SX多模光纤下连财务部各科室,管理人员办公室的工作组交换机,通过一个千兆口由1000BASE-LX多模光纤下连业务部的工作组交换机,通过一个百兆端口由100BASE-FX多模光纤下连办公室工作组交换机,通过一个百兆端口由100BASE-FX多模光纤下连教工宿舍区工作组交换机。 (2)业务部:工作组交换机DCS-3726S 通过超五类STP下连桌面接入交换机DCRS-1024。DCRS-1024通过超五类UTP接入PC。 (3)办公室:工作组交换机DCS-3726S 通过100BASE-FX下连桌面接入交换机DCRS-1024。 DCRS-1024通过超五类UTP接入摄象机和投影仪。 (4)研发部:工作组交换机DCS-3726S 通过100BASE-FX下连桌面接入交换机DCRS-1024。DCRS-1024通过超五类UTP接入PC。 (5)后勤部:工作组交换机DCS-3726S 通过100BASE-FX下连桌面接入交换机DCRS-1024。DCRS-1024通过超五类UTP接入PC。(6)人事部:工作组交换机DCS-3726S 通过100BASE-FX下连桌面接入交换机DCRS-1024。DCRS-1024通过超五类UTP接入PC。(7)生产部:工作组交换机DCS-3726S 通过100BASE-FX下连桌面接入交换机DCRS-1024。DCRS-1024通过超五类UTP接入PC。3 路由设计 采用神州数码DCR-2501V 多协议模块化路由器,确保网络的安全性和可靠性。 ①设备名称:DCR-2501V 多协议模块化路由器 ②基本介绍:神州数码DCR-2501V路由器是神州数码网络推出的固定配置语音路由器,性能稳定可靠。DCR-2501V提供了1个console端口,1个10Base-T以太网口,1个辅助(AUX)端口,2个高速广域网串口,2路FXS语音端口;DCR-2501V路由器支持常用的广域网协议和路由协议,支持VoIP协议,支持内置强大的防火墙和NAT功能,为用户提供了更加高速、安全、稳定可靠、方便的网际互连设备,非常适用于中小企业、政府等远程分支机构语音和数据互联或Internet接入等。 ③主要特征: (DDR)功能;支持IP Unnumbered,从属IP和ARP代理功能;支持多种队列算法以保证服务质量(QoS)的提供;支持Novell IPX路由协议;支持路由再分配功能;高稳定性;提供背对背(Back-to-Back)连接方案,可用于检测路由器的功能 ④技术参数 ★标准配置 ▼ 1个10 Base-T以太网口 ▼2个高速串口,支持RS232、V.24、V.35、X.21、EIA530A等电气标准 ▼ 2路FXS语音端口 ▼1个Console端口 ▼1个辅助(AUX)端口,可进行远程配置和拨号备份 ▼内存:DRAM 16 M,可扩充至32M;Flash Memory 2 M,可扩充至4M ▼CPU:32位RISC处理器(MPC860 50MHz) ★协议和标准 ▼以太网接口标准:IEEE802.3 10Base-T标准 ▼广域网接口标准:RS232、V.24、V.35、X.21、EIA530A等电气标准 ▼支持VoIP标准:支持H.323协议栈,支持 G.729、G.723.1、G.711等多种语音编码压缩标准,支持T.38传真协议和Bypass方式的传真应用。 ▼帧中继标准:ITU-T Q933Annex A、ANSI T1.617Annex D、兼容CISCO标准 ▼广域网协议:HDLC、PPP、MP、Frame-Relay(DTE/DCE)、X.25(DTE/DCE)▼路由协议:静态路由、RIP(包括RIP v1、RIP v2)、OSPF、Novell IPX路由协议 ▼用户安全认证协议:PAP、CHAP、MS-CHAP、RADIUS、TACACS+ ★管理维护 提供Show、Ping、TraceRoute、Debug等命令,用于察看、测试网络的可达性,诊断网络故障;支持Telnet远程配置与管理;支持SNMP、RMON等网络管理协议;支持HTTP协议,用户可以通过Web界面对路由器进行配置、维护 4.安全设计 可启用标准或扩展访问控制列表进行数据报或数据段控制,在内外网口设置一台DCFW-1800S-L 小型企业级百兆防火墙保证整个网络抵御来自内,外网的攻击。 ①设备名称:DCFW-1800S-L 小型企业级百兆防火墙 ②基本介绍:神州数码DCFW-1800S-L防火墙专为中小企业分支机构、SOHO办公、中小学校的网络而设计,以功能实用、接入灵活、配置方便快捷、性能稳定为设计原则,使复杂的网络安全实施得以简化。它充分考虑中小型用户特点,支持VLAN环境、支持PPPOE与DHCP,集成防火墙、VPN,内容过滤,为中小企业的网络安全实现提供了经济的解决方案。 ③主要特征: ★让中小型用户、分支机构享受无以伦比的性价比 ★轻松部署,支持PPPoE协议,提供ADSL/ISDN接入方式 ★设置简洁,通过浏览器可以轻松完成功能配置 ★支持DHCP服务器功能,节省用户网络管理投资,支持无地址接入 ★集成VPN,可以进行隧道认证及数据加密,保护了企业机密同时降低了沟通成本 ★集成内容过滤、邮件过滤,防止非法信息、恶意脚本及垃圾邮件;集成防拒绝服务网关,提供攻击检测及攻击抵御 ★支持用户认证;支持应用层日志及加密日志存储,有效审计进出网络的敏感信息 ④技术参数 ★工作模式:路由、透明、NAT ★内容过滤:URL、邮件、指令、ActiveX/Java, 诡异木马探测 ★支持:网络安全域结构体系;PPPoE协议;DHCP Relay,DHCP Server;防拒绝服务网关;VPN功能 ★最大并发连接数:300,000 ★网络吞吐量:150M ★VPN隧道数:10 ★VPN拨号用户:10 ★策略数:300 5.管理设计(包括详细管理软件说明) ①设备名称:神州数码LinkManager ②基本介绍:LinkManager 网管系统是一套基于Windows NT平台的高度集成、功能较完善、实用性强、方便易用的全中文用户界面网络管理系统。它是神州数码网络有限公司根据中国用户的实际需求,遵循ISO网络管理模型的五大功能域(性能管理、配置管理、故障管理、计费管理及安全管理)的架构,自行组织研发出来的一套具有自有知识产权的网管系统。LinkManager 具有既面向指定设备,又支持通用网络设备的“垂直+水平”的管理特性。也就是说,它能够对神州数码网络有限公司推出的具有SNMP功能的网络设备提供齐全的设备管理和功能管理,同时也能够良好地支持其他任何具有通用SNMP功能的网络设备,提供整个网络的拓扑结构和常用网络管理信息。 ③主要特征: ★提供两套视图-物理视图及逻辑视图,可满足操作员的不同需求: ▼对于希望了解当前网络拓扑逻辑结构的操作员,系统采用傻瓜方式,以默认形式为用户自动绘制出整个网络的逻辑视图,不需用户干预。 ▼对于只想掌控自己关心的网络设备的操作员,系统采用DIY 方式,支持操作员按物理连接或自己随意的自组物理视图; ▼自动绘制出的网络拓扑图还可以通过另存为的方式供操作员修改; ★提供两种设备添加方式,增强操作员在自组物理视图时的DIY手段: ▼强大的自动发现功能,具有对第二层、第三层及应用层设备的自动识别能力,能准确定位神州数码品牌的网络设备; ▼按操作员兴趣手动添加连入网络的设备,支持操作员选择不同的设备类型; ★提供两种视图的层次结构组织,纹理清晰: ▼ 在自动方式中,逻辑视图的层次结构由各层子网、网络设备及其设备特性构成; ▼ 在 DIY方式中,物理视图的层次结构由子图、网络设备及其设备特性构成; ★提供网络设备的图形标记,用作设备的属性、特征、状态标识: ▼各被管设备类型在视图中都拥有自己的属性标志图符; ▼ 各被管设备在视图中都拥有自己的三色状态标识; ▼ 各神州数码品牌的网络设备都拥有逼真的面板图,真实反映接口状况及实际连接; ▼ 在两个视图中,各设备的图形标识具有一致性; ★友好的用户界面 ▼周到的拓扑图发现方式适合操作员的不同需求; ▼采用操作员熟悉的Windows界面风格及操作方式; ▼按照中国用户的思维习惯组织的管理内容; ▼适当的产品定位,高度的集成化,将功能统一在同一界面内,可使操作员免于因功能模块散乱而引起的无所适从。 ④技术参数 ★硬件平台 ▼ Intel Pentium或以上的处理器; ▼64M或以上的内存; ▼带有SVGA图形卡的800*600显示器,现仅支持小字体; ▼ 剩余磁盘空间:50MB以上; ▼网络适配卡; ▼ 光驱。 ★网络平台 ▼安装并配置了TCP/IP协议; ▼ 以神州数码网络有限公司的网络设备为主,同时兼容其它厂家SNMP设备。▼ 能够为下述神州数码网络有限公司的网络设备提供齐全的设备管理和功能管理: 以太网交换机包括DCRS-7515、DCRS-7508、DCRS-7504、DCRS-6512、DCS-3652、DCS-3628S、DCS-3426、LRS-6706G/LRS-6626、DES-6000、DES-3326、DES-3624i、DES-3225G、DHS-3226;路由器包括DCR-3660、DCR-2650、DCR-2630、DCR-1750、DCR-1720、DCR-2511、DCR-2509、DCR-2501。 ★操作系统平台 可选以下操作系统平台: ▼ Microsoft Windows NT 4.0(Workstation或Server,Service Pack 6); ▼ Microsoft Windows 2000(Professional或Server)。 ★其它支持软件 ▼Microsoft Internet Explorer 4.0版本或以上版本,必须预先安装; ▼Acrobat Reader 4.0版本或以上版本,必须预先安装。 6.其他设备 ①设备名称:联想万全T168 G3 S930 512/73C服务器 ②基本介绍: ★采用新一代64位双核技术的英特尔?奔腾?D处理器930, 3.0GHz主频,2*2MB二级缓存,800MHz前端总线 ★512M ECC DDR2-667内存 ★73G 易插拔U320 SCSI 硬盘 ★中文版系统安装和故障排除指南 ★PS/2接口键盘和光电鼠标 7.可扩展性设计 核心,工作组,接入设备都预备有可扩展插槽和端口,方便日后系统升级;核心设备留有冗余电源,整个系统可提供不间断的服务。 六. 设备数目与价格明细表 (一)线类价格表 设备名称 设备数目 设备价格(/M) Commscope 12芯室外多模铠装光缆(62.5/125)750 m 49元/M 一舟 STP4对超五类(100米/箱)200M 430元/箱 一舟 UTP4对超五类(100米/箱)2500M 200元/箱 总计:--------42610元 (二)设备价格表 设备名称 设备数目 设备价格(/台) 神州数码 DCS-3926S交换机 1台 25000元 神州数码 DCS-3726S交换机 5台17800元 神州数码 DCS-1024交换机 17台930元 神州数码DCR-2501V 多协议模块化路由器 1台23000元 神州数码DCFW-1800S-L 小型企业级百兆防火墙 1台11000元 联想万全T168 G3 S930 512/73C服务器 5台11999元 总计: 89729元 (三)模块等其他价格 设备名称 设备数目 设备价格(/块) MS-3926S-1GT 1口100/1000Base-T千兆模块 1 4,950元 MS-3726S-1MFC 1口100Base-FX多模光纤模块 4 3,750元 DCS-3726SGBIC-LX1000Base-LX GBIC接口卡模块 3 9,950元 MS-3726-S堆叠模块 1 2450元 LinkManager-30-250N(250节点,Windows NT/2000平台,3.×版本)1 15600元 WINDOWS 2000 SEVER单击版 3 5000元 总计: 82850元 工程总造价(不含施工费用) 总计:215189元 七. 子网划分 八.推荐教材及主要参考资料 [1] [2] 谢希仁.计算机网络(第五版).电子工业出版社,2008.1 Andrew S Tanebaun.Computer Networks(Fourth Edition).Pearson Education,2002.8 [3] Andrew S Tanebaun,熊桂喜等译.Computer Networks(Third Edition).Prentice-Hall,1996.清华大学出版社,1998.7 [4] [5] [6] 谢希仁.TCP/IP协议族(第3版).清华大学出版社,2006.4 马海军.TCP/IP协议原理与应用.清华大学出版社,2005.3 Douglas E Comer.Internetworking with TCP/IP.Volume I: Principles, Protocols, and Architecture.1991 Volume II: Design, Implementation, and Internals.1991 Volume III: Client-Server Programming and Applications.1993 [7] James F Kurose and Keith W Ross.Computer Networking: A Top-Down Approach Featuring the Internet.Addison Wesley,2001 《计算机网络课程设计报告》 学院:计算机科学学院 专业:计算机科学与技术 班级: 姓名: 学号: 小组成员: 2011-7-13 项目内容:基于Socket的文件传输服务设计与实现 实验目的:基于Socket套接口,实现文件数据传输服务。目的使学生掌握网络文件传输服务的设计方法。 实验环境:操作系统:windowsXP或windows7; 内存:256M以上; Microsoft Visual C++ 6.0 设计方案:文件传送是各种计算机网络实现的基本功能,文件传送协议是一种最基本的应用层协议按照客户/服务器的模式进行工作,提供交互式的访问,是INTERNET使用最广泛的协议之一。文件传输协议的简单设计与实现建立在计算机网络实验环境TCP/IP 网络体系结构之上,使用socket 编程接口编写两个程序,分别为客户程序(client.c)和服务器程序(server.c)首先,我们知道此应用软件需实现网络中多台主机的信息互通,实现文件传输,因此涉及到主机网络互联的问题,所以必须会应用到网络协议,可以用UDP或TCP。利用IP地址接受文件内容。 实现流程: 启动电脑,打开能运行该程序的环境,必须保证代码的正确性; 进行窗体框架的设计,实现网络连接,并达到文件传输的功能; 在以上步骤的成功进行下达到设计要求的基于Sockets的局域网内文件传输的函数实现的目的。 源程序; 程序清单: 服务器: #include “stdafx.h” #include “Server.h” #include “ServerDlg.h” #ifdef _DEBUG #define new DEBUG_NEW #undef THIS_FILE static char THIS_FILE[] = __FILE__;#endif ///////////////////////////////////////////////////////////////////////////// // CServerDlg dialog CServerDlg::CServerDlg(CWnd* pParent /*=NULL*/): CDialog(CServerDlg::IDD, pParent){ //{{AFX_DATA_INIT(CServerDlg) // NOTE: the ClassWizard will add member initialization here //}}AFX_DATA_INIT // Note that LoadIcon does not require a subsequent DestroyIcon in Win32 m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);} void CServerDlg::DoDataExchange(CDataExchange* pDX){ CDialog::DoDataExchange(pDX);//{{AFX_DATA_MAP(CServerDlg) // NOTE: the ClassWizard will add DDX and DDV calls here //}}AFX_DATA_MAP } BEGIN_MESSAGE_MAP(CServerDlg, CDialog)//{{AFX_MSG_MAP(CServerDlg)ON_WM_PAINT()ON_WM_QUERYDRAGICON()ON_BN_CLICKED(IDC_BUTTON_LICSEN, OnButtonLicsen)ON_BN_CLICKED(IDC_BUTTON1, OnButtonOK)//}}AFX_MSG_MAP END_MESSAGE_MAP() ///////////////////////////////////////////////////////////////////////////// // CServerDlg message handlers BOOL CServerDlg::OnInitDialog(){ CDialog::OnInitDialog();3 // Set the icon for this dialog.The framework does this automatically // when the application's main window is not a dialog SetIcon(m_hIcon, TRUE);// Set big icon SetIcon(m_hIcon, FALSE);// Set small icon // TODO: Add extra initialization here return TRUE;// return TRUE unless you set the focus to a control } // If you add a minimize button to your dialog, you will need the code below // to draw the icon.For MFC applications using the document/view model, // this is automatically done for you by the framework.void CServerDlg::OnPaint(){ if(IsIconic()){ CPaintDC dc(this);// device context for painting SendMessage(WM_ICONERASEBKGND,(WPARAM)dc.GetSafeHdc(), 0); // Center icon in client rectangle int cxIcon = GetSystemMetrics(SM_CXICON); int cyIcon = GetSystemMetrics(SM_CYICON); CRect rect; GetClientRect(&rect); int x =(rect.Width()cyIcon + 1)/ 2; // Draw the icon dc.DrawIcon(x, y, m_hIcon);} else { CDialog::OnPaint();} } // The system calls this to obtain the cursor to display while the user drags // the minimized window.HCURSOR CServerDlg::OnQueryDragIcon(){ 4 return(HCURSOR)m_hIcon;} void CServerDlg::OnButtonLicsen(){ // TODO: Add your control notification handler code here CFileDialog Dlg(TRUE);if(Dlg.DoModal()!=IDOK) return; CFile myFile;if(!myFile.Open(Dlg.GetPathName(), CFile::modeRead | CFile::typeBinary)){ AfxMessageBox(“文件不存在!”,MB_OK|MB_ICONERROR); return;} CSocket sockSrvr;sockSrvr.Create(800); sockSrvr.Listen();CSocket sockRecv;sockSrvr.Accept(sockRecv); SOCKET_STREAM_FILE_INFO StreamFileInfo;WIN32_FIND_DATA FindFileData; FindClose(FindFirstFile(Dlg.GetPathName(),&FindFileData));memset(&StreamFileInfo,0,sizeof(SOCKET_STREAM_FILE_INFO));strcpy(StreamFileInfo.szFileTitle,myFile.GetFileTitle()); StreamFileInfo.dwFileAttributes = FindFileData.dwFileAttributes;StreamFileInfo.ftCreationTime = FindFileData.ftCreationTime;StreamFileInfo.ftLastAccessTime = FindFileData.ftLastAccessTime;StreamFileInfo.ftLastWriteTime = FindFileData.ftLastWriteTime;StreamFileInfo.nFileSizeHigh = FindFileData.nFileSizeHigh;StreamFileInfo.nFileSizeLow = FindFileData.nFileSizeLow; sockRecv.Send(&StreamFileInfo,sizeof(SOCKET_STREAM_FILE_INFO)); UINT dwRead=0;while(dwRead byte* data = new byte[1024];5 UINT dw=myFile.Read(data, 1024); sockRecv.Send(data, dw); dwRead+=dw;} myFile.Close(); sockRecv.Close();AfxMessageBox(“发送完毕!”);} void CServerDlg::OnButtonOK(){ // TODO: Add your control notification handler code here OnOK(); } 客户机: // ClientDlg.cpp : implementation file // Download by http://www.codefans.net #include “stdafx.h” #include “Client.h” #include “ClientDlg.h” #ifdef _DEBUG #define new DEBUG_NEW #undef THIS_FILE static char THIS_FILE[] = __FILE__;#endif ///////////////////////////////////////////////////////////////////////////// // CClientDlg dialog CClientDlg::CClientDlg(CWnd* pParent /*=NULL*/)6 : CDialog(CClientDlg::IDD, pParent){ //{{AFX_DATA_INIT(CClientDlg)// NOTE: the ClassWizard will add member initialization here //}}AFX_DATA_INIT // Note that LoadIcon does not require a subsequent DestroyIcon in Win32 m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);} void CClientDlg::DoDataExchange(CDataExchange* pDX){ CDialog::DoDataExchange(pDX);//{{AFX_DATA_MAP(CClientDlg)// NOTE: the ClassWizard will add DDX and DDV calls here //}}AFX_DATA_MAP } BEGIN_MESSAGE_MAP(CClientDlg, CDialog)//{{AFX_MSG_MAP(CClientDlg)ON_WM_PAINT()ON_WM_QUERYDRAGICON()ON_BN_CLICKED(IDC_BUTTON_SEND, OnButtonSend)ON_EN_CHANGE(IDC_EDIT_IPADDRESS, OnChangeEditIpaddress)ON_BN_CLICKED(IDC_BUTTON1, OnButtonOK)//}}AFX_MSG_MAP END_MESSAGE_MAP() ///////////////////////////////////////////////////////////////////////////// // CClientDlg message handlers BOOL CClientDlg::OnInitDialog(){ CDialog::OnInitDialog(); // Set the icon for this dialog.The framework does this automatically // when the application's main window is not a dialog SetIcon(m_hIcon, TRUE);SetIcon(m_hIcon, FALSE); // TODO: Add extra initialization here return TRUE;// return TRUE unless you set the focus to a control } // If you add a minimize button to your dialog, you will need the code below // to draw the icon.For MFC applications using the document/view model, // this is automatically done for you by the framework.void CClientDlg::OnPaint(){ if(IsIconic()){ // Set big icon // Set small icon CPaintDC dc(this);// device context for painting SendMessage(WM_ICONERASEBKGND,(WPARAM)dc.GetSafeHdc(), 0);// Center icon in client rectangle int cxIcon = GetSystemMetrics(SM_CXICON);int cyIcon = GetSystemMetrics(SM_CYICON); } CRect rect;GetClientRect(&rect);int x =(rect.Width()cyIcon + 1)/ 2;// Draw the icon dc.DrawIcon(x, y, m_hIcon);else { } } // The system calls this to obtain the cursor to display while the user drags // the minimized window.HCURSOR CClientDlg::OnQueryDragIcon(){ return(HCURSOR)m_hIcon;} void CClientDlg::OnButtonSend(){ // TODO: Add your control notification handler code here AfxSocketInit(NULL);CSocket sockClient;sockClient.Create(); CString szIP;GetDlgItemText(IDC_EDIT_IPADDRESS,szIP);CDialog::OnPaint(); if(!sockClient.Connect((LPCTSTR)szIP, 800)){ AfxMessageBox(“连接到对方机器失败!”); return;} SOCKET_STREAM_FILE_INFO StreamFileInfo;sockClient.Receive(&StreamFileInfo,sizeof(SOCKET_STREAM_FILE_INFO)); CFile destFile(StreamFileInfo.szFileTitle,CFile::modeCreate CFile::modeWrite | CFile::typeBinary); UINT dwRead = 0;while(dwRead byte* data = new byte[1024]; memset(data,0,1024); UINT dw=sockClient.Receive(data, 1024); destFile.Write(data, dw); dwRead+=dw;} SetFileTime((HANDLE)destFile.m_hFile,&StreamFileInfo.ftCreationTime,&StreamFileInfo.ftLastAccessTime,&StreamFileInfo.ftLastWriteTime);destFile.Close(); | SetFileAttributes(StreamFileInfo.szFileTitle,StreamFileInfo.dwFileAttributes);sockClient.Close();AfxMessageBox(“接收完毕!”);} void CClientDlg::OnChangeEditIpaddress(){ // TODO: If this is a RICHEDIT control, the control will not // send this notification unless you override the CDialog::OnInitDialog()// function and call CRichEditCtrl().SetEventMask()// with the ENM_CHANGE flag ORed into the mask.// TODO: Add your control notification handler code here CString szIpAddress; GetDlgItemText(IDC_EDIT_IPADDRESS,szIpAddress);if(szIpAddress.IsEmpty())GetDlgItem(IDC_BUTTON_SEND)->EnableWindow(FALSE);else } void CClientDlg::OnButtonOK(){ // TODO: Add your control notification handler code here OnOK();} 安装演示说明详细步骤: GetDlgItem(IDC_BUTTON_SEND)->EnableWindow(TRUE);11 服务器向客户机发送文件:效果如图 客户器输入服务器的IP地址并选择接受来自服务器发送的文件,选择接受。效果如下图: 输入IP地址 如果地址有误则显示 : 实验总结: 通过本次计算机网络课程设计,我更加充分的理解了课本上的知识,并能够加以扩展,从而应用于实践当中,这几天的课程设计令我受益匪浅,很多平时模棱两可的知识点都认真复习并实践了。我意识到我们所学的东西将来都是要付诸实践的,所以一切要 12 从实际情况出发,理论联系实际,这样才能真正发挥我们所具备的能力。经过此次课程设计,我向我成功的目标又迈进了一步第二篇:网络课程设计
第三篇:网络课程设计
第四篇:网络课程设计
第五篇:网络课程设计报告