《C#网络应用编程(2008).pdf》由会员分享,可在线阅读,更多相关《C#网络应用编程(2008).pdf(12页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、第 1 页共 12 页河南大学计算机与信息工程学院2007 2008学年第二学期期末考试网络开发技术试卷考试方式:闭卷考试时间:120 分钟卷面总分:100 分一、选择题(选择最确切的一个答案,将其代码填入括号中,本题共15 题,每题 1 分,共 15 分)1下列描述中哪个不是UDP 的特点()A.传输消息无消息边界。B.可以以广播或组播的方式发送数据。C.一种无连接的协议。D.不保证数据到达的顺序与数据发出的顺序相同。2为了确定是否是创建控件的线程访问该控件的对象,需要检查的属性是()A.Visible B.InvokeRequired C.CanSelect D.Enabled 3什么是
2、CPU 调度和分配的基本单位()A.线程B.进程C.程序D.线程池4利用 TCP 进行通信时,发送方第一次发送的字符串为“4567”,第二次发送的字符串为“abcd”,接收方不可能出现的情况为()A.第一次接收 4567,第二次接收 abcd B.第一次接收 4567a,第二次接收 bcd C.第一次接收 4567,第二次接收 abc,第三次接收 d D.第一次接收 456,第二次接收 abcd 5Process 类提供了获取本机和远程计算机上相关进程的方法,下列哪个方法用于获取本机所有的进程。()题得分评阅人号一二三四五总成绩合分人得分第 2 页共 12 页A.GetProcessesByN
3、ame B.GetProcessByID C.GetProcessByName D.GetProcesses 6下列说法不正确的是()A:组播组是开放的,可以随时加入到组播组中,也可以随时离开。B.组播消息不能穿越子网。C.组播通信时不需要向组播组发起连接请求。D.组播地址范围在 224.0.0.0-239.255.255.255。7当利用 FTP 协议传输文本时,应采用哪种传输方式()A.ASCII B.二进制C.Unicode D.GB-2312 8发送电子邮件经常使用的协议是()A.POP3 B.SMTP C.FTP D.P2P 9下列中那个不是进行邮件发送和接收时常用的类()A.Att
4、achment B.SmtpClient C.MailMessage D.FtpWebRequest 10下列描述不正确的是:()A.P2P 是一种新的网络传输协议。B.P2P 架构中若存在中央服务器,则该服务器起到促成各节点协调的功能。C.常见的 P2P软件有 PPLIVE、QQ、POPO、BT。D.服务器和客户端通信需要知道对方使用的IP 地址和端口号。11在 FTP 协议中建立控制连接时服务器使用的端口是()A.21 B.110 C.80 D.81 12下列说法不正确的是()A.不对称加密算法能够使用流进行处理,所以速度较快。B.HASH 算法对不同的数据加密不可能得到相同的结果。C.不
5、对称加密算法用公钥加密的数据只能用私钥解密。D.对称加密算法加密和解密数据使用同一个密钥。13 确实需要保存密钥时,比较安全的办法是应该保存在哪里()。A.XML B.文本C.程序中D.密钥容器14下面算法中不对称加密算法为()。第 3 页共 12 页A.RC2 B.DES C.TripleDES D.RSA.15XNA 中通过内容管道加载的资源利用什么属性访问()。A.Asset Name B.fileName C.Name D.File 二、填空题(每空 1分,共 15 分)1C 类网络地址 192.168.3.5,使用子网掩码 255.255.255.0,则本地广播地址为()。2如果一个
6、线程 t1 在执行的过程中需要等待另一个线程t2 结束后才能继续执行,可以在线程t1 调用线程()的()方法。3()是网络通信的基本操作单元,()对象是专门用于网络通信的数据流。4FTP 协议在建立数据连接时,支持两种工作模式()、()。5在SMTP 中,电子邮件由三部分组成:()()()。6.在 XNA Framework 2.0 中有三种特殊类型的矩阵:()()()。7P2P的设计模式有()()两类。三、简答题(每题 6分,共 30 分)1.什么是数据完整性验证?简要回答如何实现数据完整性验证?。答:得分评阅人得分评阅人学号:姓名:年级:专业:?密?封?线?第 4 页共 12 页2.解决
7、TCP 协议的无消息边界问题一般有几种方法?它们适合哪些场合?答:3.简述 P2P和传统的 C/S 模式相比有哪些优缺点?答:4.什么是线程同步?如何实现线程同步?答:第 5 页共 12 页5.简述 POP3工作原理。答:四、程序分析题(本题共 1 题,共 10 分)1分析下面的程序,并回答下列问题。(共 10 分)class Program private int n1,n2,n3;EventWaitHandle myEventWaitHandle=new EventWaitHandle(false,EventResetMode.ManualReset);static void Main(s
8、tring args)Program p=new Program();Thread t0=new Thread(p.ReadThread)Thread t1=new Thread(p.WriteThread)t0.Start()t1.Start()Console.ReadLine();得分评阅人学号:姓名:年级:专业:?密?封?线?第 6 页共 12 页/写方法private void WriteThread()myEventWaitHandle.Reset();Console.WriteLine(t1);n1=2;n2=4;n3=5;myEventWaitHandle.Set();/读方法p
9、rivate void ReadThread()myEventWaitHandle.WaitOne();Console.WriteLine(0+1+2=3,n1,n2,n3,n1+n2+n3);(1)写出程序的运行结果。(6分)(2)myEventWaitHandle.WaitOne()的含义是什么?(2 分)(3)myEventWaitHandle.Set()的含义是什么?(2 分)第 7 页共 12 页五、设计题(本题共 3 题,共 30 分)1现有一个 Windows 应用程序,利用TCP实现服务端功能。下面列出了相应的事件及部分代码,请在下列选项中选择最确切的答案,将完成事件功能的代码
10、填写完整。(10 分)A Start()B AcceptTcpClient()C Begin()D IPHostEntry E Dns F AcceptSoket()G sr.ReadLine()H sr.ReadString()I client.GetStream()J GetValue()K Accept()L new NetWorkStream()(1)单击启动监听,则在本机第一个可用IP 地址、端口 3035 上启动 TCP监听,等待客户端的连接,每当接收到一个客户端连接请求后,启动一个线程负责接收并处理该客户端发送过来的信息。private TcpListener myListene
11、r;private void button1_Click(object sender,EventArgs e)String name=Dns.GetHostName();/获取本机所有 IPAddress IPAddress allIP=_.GetHostAddresses(name);IPAddress ip=allIP0;myListener=new TcpListener(ip,port)/启动监听myListener._;Thread threadListenClient=new Thread(ListenClientConnet);threadListenClient.Start()
12、;(2)ListenClientConnet 方法负责接收客户端的连接请求。private void ListenClientConnect()得分评阅人学号:姓名:年级:专业:?密?封?线?第 8 页共 12 页 while(true)TcpClient newClient=null;try /等待用户进入newClient=myListener._;catch break;Thread receiveDataThread=new Thread(ReceiveData);receiveDataThread.Start(newClient);(3)补充负责接收数据的ReceiveData方法。
13、private void ReceiveData(object obj)TcpClient client=(TcpClient)obj;bool exitWhile=false;while(exitWhile=false)string receiveString=null;try /方法获取网络流NetWorkStream stream=_;/利用 StreamReader对网络流进行封装StreamReader sr=new StreamReader(stream);第 9 页共 12 页/利用 sr读取数据receiveString=_;catch service.SetListBox(接
14、收数据失败);答:2现有一个 Windows 应用程序,该程序利用组播技术实现网络会议讨论。该会议使用组播组地址为224.0.0.1,通讯端口为 3035。下面是完成此功能的核心代码框架,在下列选项中选择最确切的答案,将完成事件功能的代码填写完整。(10分)A.UTF8 B GetBytes C ip D iep E ref remote F remote G IPAddress H GetValue I ASCII J GetString(1)将 SendToAll 方法填写完整。该方法实现加入到组播组中,并向组播组发送组播消息的功能。private void SendToAll(Strin
15、g strMessage)UdpClient myUdpClient=new UdpClient();IPAddress ip=IPAddress.Parse(224.0.0.1);myUdpClient.EnableBroadcast=true;/实例化通讯用端点IPEndPoint iep=new IPEndPoint(ip,3035);/加入组播组udpClient.JoinMuticastGroup(_);udpClient.Ttl=30;/将 strMessage转换为 UTF8 字节数组Byte bytes=Encoding.UTF8._(strMessage)学号:姓名:年级:专
16、业:?密?封?线?第 10 页共 12 页try /向子网发送信息udpClient.Send(bytes,bytes.Length,_);catch(Exception err)MessageBox.Show(err.Message,发送失败);finally myUdpClient.Close();(2)ReceiveData方法负责在端口 3035 接收组播消息。private void ReceiveData()/在本机指定的端口接收udpClient=new udpClient(3035);IPEndPoint remote=null;while(true)try /接收从远程主机发
17、送过来的信息;byte bytes=udpClient.Receive(_);/将接收到的字节数组转化为字符串;string str=Encoding._.GetString(bytes);AppendString(string.Format(来自0:1,remote,str);catch break;第 11 页共 12 页答:3(1).NET 基类库使用的私钥算法类采用的加密模式是密码本模式还是密码块链模式?如果有两个内容相同的原始数据块,使用.NET 提供的对称加密类,使用相同的私钥进行加密,那么得到的加密后的两个数据块是否相同?并给出理由。(4 分)答:(2)方法 EnCryptTex
18、t 实现利用 TripleDES 算法对字符串的加密,下面列出了加密方法的部分代码,选择最确切的答案,将完成事件功能的代码填写完整。(6 分)A cryptoStream B memoryStream C ToArray()D ToCharArray()E Abort()F Close()/toEncrypt 待加密字节数组/Key 算法使用密钥/IV 算法使用向量private byte EncryptText(BYTE toEncrypt,byte Key,byte IV)/创建一个内存流MemoryStream memoryStream=new MemoryStream();/使用内存流
19、、私钥和IV 创建加密流,补充第1 个参数。CryptoStream cryptoStream=new CryptoStream(_,new TripleDESCryptoServiceProvider().CreateEncryptor(Key,IV),CryptoStreamMode.Write);学号:姓名:年级:专业:?密?封?线?第 12 页共 12 页try /将字节数组写入加密流cryptoStream.Write(toEncrypt,0,toEncrypt.Length)cryptoStream.FlushFinalBlock();byte encryptedBytes=memoryStream._;return encryptedBytes;catch(CryptographicException err)throw new Exception(加密出错:+err.Message);finally /关闭加密流cryptoStream._;memoryStream.Close();答:
限制150内