深圳大学-java程序设计--网络编程应用

上传人:1** 文档编号:359731 上传时间:2018-06-28 格式:DOCX 页数:11 大小:398.89KB
返回 下载 相关 举报
深圳大学-java程序设计--网络编程应用_第1页
第1页 / 共11页
深圳大学-java程序设计--网络编程应用_第2页
第2页 / 共11页
深圳大学-java程序设计--网络编程应用_第3页
第3页 / 共11页
点击查看更多>>
资源描述
深 圳 大 学 实 验 报 告课程名称:Java 程序设计 实验项目名称: 必实验 6 网络编程应用 学院: 计算机与软件学院 专业: 指导教师:尹剑飞 报告人: 黄钢 学号: 2016150170 班级: 计软 4 班 实验时间: 2017 年 12 月 19 日(周一)-2017 年 12 月 29 日(周四)实验报告提交时间: 2017 年 12 月 28 日星期四 教务部制实验目的与要求:实验目的: 掌握网络通信协议及相关程序设计。实验要求:(1). 利用数据报通信方式试编写一程序,该程序生成两个客户端,一个服务器端,两个客户端可以相互进行简短的文字交流。在报告中附上程序截图、完整的运行结果和简要文字说明。 (50 分)(2). 编写 Java 应用程序,根据作业“单机版中英文单词测试程序”的要求,将之改为网络版。客户端和服务器端建立套接字连接后,服务器端向客户端发送一个英文单词和四个中文解释(分别为 A,B,C,D) ,假设只有一个解释是正确的;客户端将答案发送给服务器端;服务器端判断客户端的答案是否正确,并将已经给出的题目的数量和答对的数量返回给客户端,同时也把下一个英文单词和四个中文解释发送给客户端;如此循环 10 次结束单词测试。要求使用图形界面。词库应至少包含 10 个英文单词和相应的正确解释和错误解释。在报告中附上程序截图、完整的运行结果和简要文字说明。 (50分)说明:(1)本次实验课作业满分为 100 分,占总成绩的比例(待定) 。(2)本次实验课作业截至时间 2017 年 12 月 29 日(周四)23:59。(3)报告正文:请在指定位置填写,本次实验需要单独提交源程序文件。(4)个人信息:WORD 文件名中的 “姓名” 、 “学号” ,请改为你的姓名和学号 ;实验报告的首页,请准确填写“学院” 、 “专业” 、 “报告人” 、 “学号” 、 “班级” 、 “实验报告提交时间”等信息。(5)提交方式:截至时间前,请在 MOOC 平台中提交;截至时间后一周内提交(即延迟提交) ,请发邮件到 yjfszu.edu.cn,并在邮件中注明课程名称、作业名称、姓名、学号等信息,我收到后会及时回复。(6)发现抄袭(包括复制& 粘贴整句话、整张图) ,该次作业记零分。(7)延迟提交(即 2017 年 12 月 29 日 23:59 之后) ,不得分。(8)期末考试阶段补交无效。(1). 利用数据报通信方式试编写一程序,该程序生成两个客户端,一个服务器端,两个客户端可以相互进行简短的文字交流。在报告中附上程序截图、完整的运行结果和简要文字说明。(50 分)首先在服务器端建立两个 Node 对象(用来标识不同客户端) ,即 client1 和 client2 的address 和 port。然后在主线程中启动死循环,在每次循环中开启一个 DatagramSocket 对象来接收数据包,当接收到数据包后,解析出它是由哪个客户端发过来的,然后在最开始建立的两个 Node 对象中找到该数据报应该发往哪个客户端(总共两个 Node,除了本身,另一个就是发送地址) 。找到发送地址后,将其与数据报作为参数创建 Server 对象(实现了 Runnable 接口) ,开启Server 的线程将数据报发送到另一个客服端,一次信息传递结束。接着可以进行第二次信息传送(无论从哪个客户端发信息都可以) 。注:由于在同一台机器上的 IP 地址相同,光靠 address 来区分不同客户端是不现实的,所以还需要加上端口号。因此,在同一台机器上,client1 和 client2 的代码之间的区别就只是用来接收和发送数据包的 DatagramSocket 的端口号不同。若是服务端在不同机器上,则端口号也可以相同。此外,客服端在接收信息时,可能受到电脑防火墙的阻止,要注意一下(在这里我找了好久的 bug。 。 。 ) 。服务端首先开启 MyService,执行死循环,在循环中为每一个发送数据报的客服端分配一个工作线程,来将信息发给相应的客户端。代码如下:工作线程由类 Server 提供:从主线程中得到接收端的 address 和 port,以及需要发送的信息,在 run 方法中,将信息发送给接收端。客户端界面如下:最下面的文本框用来输入想要发送的信息,然后点击 Send,就会发送到另一个客户端上,在 Received Message 下面是用来显示聊天记录的,自己发送的信息显示在聊天记录中会加上“I: ”来区分,对方发送的则会加上“him: ”。Clear 按钮是用来清空聊天记录的主线程负责信息的发送,另外开启工作线程进行数据的接收,即 run 方法,run 方法中是一个死循环,一直在等待接收信息,接收到信息后,在聊天记录中显示,并开始下一次循环。Run 方法代码如下运行结果:(2). 编写 Java 应用程序,根据作业“单机版中英文单词测试程序”的要求,将之改为网络版。客户端和服务器端建立套接字连接后,服务器端向客户端发送一个英文单词和四个中文解释(分别为 A,B,C,D) ,假设只有一个解释是正确的;客户端将答案发送给服务器端;服务器端判断客户端的答案是否正确,并将已经给出的题目的数量和答对的数量返回给客户端,同时也把下一个英文单词和四个中文解释发送给客户端;如此循环 10 次结束单词测试。要求使用图形界面。词库应至少包含 10 个英文单词和相应的正确解释和错误解释。在报告中附上程序截图、完整的运行结果和简要文字说明。 (50 分)网络版的中英文单词测试程序分为两部分:服务端和客户端。服务端采取多线程处理套接字连接,可以为多个客户端同时提供服务(但是在本实验中,如果想要启动多个客户端,则需要修改端口号) 。服务端有两个类:MyService 和 Handler。MyService 主要用来为每一个客户端分配一个工作线程(由 Server 提供) 。服务器的主线程(MyService 的 main 方法)负责接收客户的连接,每收到一个连接请求,就创建一个线程负责与客户通信。Server 主要实现 Runnable 接口,在 run 方法中,有一个执行 10 次的循环,每次循环,负责向客户端发送一个英文单词和四个中文解释(即 5 个 String) ,然后接收客户端发回来的选项(String ) ,判断结果是否正确,向客户端发送正确数和做题总数。最后线程暂停 3 秒钟。客户端界面如下:界面实现与必实验 5 类似。整个界面中只有输入选项的文本框实现了监听接口,用于将答案发送至服务端进行判断。客户端的 run 方法是用来更新界面的,当输入上一题的答案后,主动更新到下一题,不需要手动操作。代码如下:Myservice 类的主要执行代码:当接收到客户端请求时,开启 Handler 的线程。run 方法如下:getFour 用来生成 4 个选项,并返回正确选项是第几个。Handler 的 run 方法。详细代码见附件。运行结果:先启动服务器端,再启动客户端。+其他(例如感想、建议等等) 。深圳大学学生实验报告用纸指导教师批阅意见:成绩评定:指导教师签字:2017 年 月 日备注:注:1、报告内的项目或内容设置,可根据实际情况加以调整和补充。2、教师批改学生实验报告时间应在学生提交实验报告时间后 10 日内。
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 图纸专区 > 大学资料


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!