我是靠谱客的博主 野性夕阳,最近开发中收集的这篇文章主要介绍网络编程实验综合报告第一章 编程内容概述第二章 编程环境第三章 编程实验过程第四章 网络编程技术点第五章 总结展望,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

文章目录

  • 第一章 编程内容概述
  • 第二章 编程环境
    • 2.1 硬件环境
    • 2.2 软件环境
  • 第三章 编程实验过程
    • 3.1文件拷贝
    • 3.2Socket 通信
    • 3.3 UDP通信
    • 3.4 通信协议
    • 3.5 组播编程
  • 第四章 网络编程技术点
    • 4.1文件拷贝
      • 4.1.1 技术点概述
      • 4.1.2 实现方法步骤
      • 4.1.3 实验结果截图
    • 4.2 Socket 通信
      • 4.2.1 技术点概述
      • 4.2.2 实现方法步骤
      • 4.2.3 实验结果截图
    • 4.3 UDP通信
      • 4.3.1 技术点概述
      • 4.3.2 实现方法步骤
      • 4.3.3 实验结果截图
    • 4.4 通信协议
      • 4.4.1 技术点概述
      • 4.4.2 实现方法步骤
      • 4.4.3 实验结果截图
    • 4.5 组播编程
      • 4.5.1 技术点概述
      • 4.5.2 实现方法步骤
      • 4.5.3 实验结果截图
  • 第五章 总结展望

第一章 编程内容概述

​ 如今,随着云计算、大数据、物联网、互联网+等技术的发展,现在在很多地方都会用到网络编程的技术,尤其是在联网趋势的逐步增强以及网络应用程序的大量出现,所以在实际的开发中网络编程技术获得了大量的使用。

​ 在过去的学习中,大量的知识通过课程实验得到了大大的基础,在学习的过程中,学习到了以套接字、数据报为主的基于网络的通信程序的原理、设计和实现,通过课程的五个实验,大大增强了动手实践能力,同时在软件和通信之间的编程更加熟练,掌握了Windows环境下基于套接字的服务端和客户端设计、基于UDP的服务器端和客户端设计、基于TCP/IP编程以及组播编程的方法和应用,了解Android下同类编程特点,获得了大量的编程知识。

​ 综合实验需要完成文件文件拷贝、Socket通信、UDP通信、通信协议、组播编程5个方面的实验项目,文件拷贝可以实现文件的管理,可以进行拷贝自己想要的文件,文件拷贝可以实现网络的文件拷贝,例如一些文件上传就是运用了文件拷贝多线程输入输出流转换,网络编程套接字那是必不可少的,尤其是TCP协议中的Socket、ServerSocket,还有UDP的DatagramSocket,以及组播中的MulticasSocket,套接字是通信的基础,套接字就是在不同的主机间的进程进行双向相同的端点,构成了整个网络间的编程界面,而通信协议就是主机之间交换信息的协议,可以看作数据交换的规则,我们通过网络通信协议实现信息的交互,利用套接字进行端对端的数据传输。

​ 所以本次这实验目的在同一个项目内编写程序,实现完成文件文件拷贝、Socket通信、UDP通信、通信协议、组播编程5个方面技术点,而在之间的课程实验中,我做了许多关于信息交互的实验项目,就是客户之间的通信,实现聊天的效果,同样这次实验也是一个聊天应用程序项目,利用TCP技术可以完成聊天的需求,编写通信协议类实现群聊和私聊的功能,利用爬虫获取当前城市的实时温度,并利用UDP技术通过JavaFx绘制动态的温度曲线图,组播通信的交互是利用了MulticasSocket套接字,对于组播很多时候可以想到是直播、多媒体信息的发布、网络电视应用等等,组播能够实现将数据有选择性地复制给需要的主机,而不是发送给所有主机,这样可以避免广播风暴的发生。所以对于组播就实现简单的,群发告示功能。最后就是利用多线程实现当地的文件拷贝功能。

在这里插入图片描述

第二章 编程环境

2.1 硬件环境

​ 硬件:i5-8300H、8G内存、1TBG硬盘、百兆网

2.2 软件环境

​ 软件:Window 10操作系统、局域网、开发工具Apache NetBeans IDE 11.2

第三章 编程实验过程

3.1文件拷贝

文件拷贝功能,要实现对大文件使用多线程复制,也是会将Fileproject类变成线程Thread的子类,在里面要重写run方法,把文件复制功能的代码放到run里面去以实现线程调用,写一个构造函数,以实现将文件路劲的调换,这样才能有更大的扩展性。多线程的文件拷贝是最重要的需求,大大提高了传输的效率,节约时间。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-nF1JoEzk-1592821236726)(file:///C:UsersDanielAppDataLocalTempksohtml19216wps3.jpg)]

因为Fileproject没有主方法,无法自启动,要调用Fileproject类,使用图形化界面创建一个窗体JFrame类,实现点击运行,现在进行操作FileJframe类,利用图形化界面对实现功能会更加有效果,同时通过按钮的点击事件,可以获得想要的事件,尤其是在生成最后的文件拷贝,要通过输入输出流查询文件的字节流,最后再转换成字符流输出,在最后添加了一个文件拷贝路劲查看功能。

3.2Socket 通信

​ Socket通信是整个项目的基础,因为要实现聊天的交互,在控制台交流显然是比较麻烦的,所以需要图形化界面设计客户端的聊天页面,还有需要服务器的查看用户的请求列表,服务器后台可以查看客户发来的消息的情况,并根据协议实现转发到所需要接收的用户页面上。按钮启动服务器利用多线程管理,实现多用户的添加,通过线程不断转发数据,客户端通过多线程实现信息的发送和接收

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-dn9lFJNd-1592821236730)(file:///C:UsersDanielAppDataLocalTempksohtml19216wps4.jpg)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-3YRb8JE4-1592821236738)(file:///C:UsersDanielAppDataLocalTempksohtml19216wps5.jpg)]

3.3 UDP通信

​ UDP的功能实现是通过传送温度利用JavaFx对温度进行不断地绘制,展示出来的是动态温度曲线图,但是为了温度的比较准确性,我根据了网络上的信息进行爬虫,在hao123官网上爬取到自己的城市以及最大温度和最小温度,并通过UDP服务器端进行打包数据发送到客户端,难的一点就是和采用了TCP做成的聊天室进行有效的结合,在不断的尝试下,可以完成所要的需求。

3.4 通信协议

这里的通信协议实现的是聊天信息的私聊和群聊,处理发来的数据,首先我们要对收来的数据进行添加和处理,根据发来的情况,返回一个状态,来确定是私聊和群发消息的功能。明确四种情况,进入和退出,私聊和群聊。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-7GtdfluP-1592821236743)(file:///C:UsersDanielAppDataLocalTempksohtml19216wps6.jpg)]

通信议类就是处理信息,对数据进行处理,当客户发来消息时,我们要对消息进行添加一些服务器可以判断的附加数据,之后通过通信协议实现私聊和群聊。

3.5 组播编程

组播的实现就是在启动服务器时候,就生成一个线程去监听指定地址和端口的线程,而服务器接受和转发过程中会造成数据混乱,需要将客户发往服务器,和服务器发往客户的MulticasSocket进行区别化,怎样才能有效的连接,而客户就是按钮发送到一个组播地址,服务器发送到另一个组播组,客户接收到数据就会显示,实现了显示组播告示的功能。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-1K7DFhkK-1592821236744)(file:///C:UsersDanielAppDataLocalTempksohtml19216wps7.jpg)]

第四章 网络编程技术点

4.1文件拷贝

4.1.1 技术点概述

拷贝文件并不是拷贝指定的文件,该功能是通过了JFileChooser文件选择保存类实现的,而且支持多线程的文件拷贝,大大提高了文件的拷贝速度,并且节约了时间,最后有个拷贝到文件的路径名,方便人们去寻找拷贝的文件,功能需要用户登录才能使用。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-usiTySKr-1592821236746)(file:///C:UsersDanielAppDataLocalTempksohtml19216wps8.jpg)]

4.1.2 实现方法步骤

  1. 创建JFrame窗体类,创建了两个按钮,选择文件,拷贝文件,一个文本域。
  2. 选择文件通过JFileChooser选择到自己想要的文件名路径,最后选择好了的路径名返回到,文本域中。
  3. 再通过拷贝文件按钮再次利用JFileChooser类来讲数据进行传输
  4. 数据传输为多线程传输,把数据交互写在了线程里面。
  5. 文件拷贝成功。

4.1.3 实验结果截图

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-2lmeLj6N-1592821236747)(file:///C:UsersDanielAppDataLocalTempksohtml19216wps9.jpg)]

4.2 Socket 通信

4.2.1 技术点概述

每个客户端在连接到服务器端时,要通过控制台输入自己的名称,然后开始发送消息到服务端,服务端在接收到客户端的连接时,首先输出谁进入了聊天室,然后把客户端发来的消息转发给其他客户端,实现群聊的功能,如果客户端按照约定以name#message&开头的格式输入消息,服务端需要解析到客户端要私聊的对象,把消息单独发送给要私聊的客户端。

Socket是本项目的主体,其实第一步就是先实现了这个整体功能,聊天室需要一个服务器来支持,多个客户端连接到服务器端,服务器的作用就是接收不同客户端的数据,并转发到其他客户端。客户端可发发送数据给服务器端,同时客户端也需要接收服务器端返回的数据。客户端的发送数据和接收数据是两个独立的通道,互不影响。即客户端的输出与输入要独立,可以使用多线程来实现。

在管理多线程的时候需要记住Socket对象,生成了name和Socket的一个实体类进行封装和查询数据,实现数据的分发。通过管理通道来实现分发消息。

消息分为进入聊天室提醒消息、退出聊天室提醒消息、私聊消息,群发消息。

4.2.2 实现方法步骤

  1. 创建一个服务器窗口、连接服务器窗口、客户页面窗口
  2. 编写服务器的程序,先将简单的客户传来的消息进行测试,成功后编写群发的程序
  3. 服务器的逻辑是一件大工程,因为你不知道那个是你要发的和还要生成多个用户聊天,就要多线程和通道管理,将ServerThread线程类写进List列表中,管理人户,多连接。
  4. 根据消息需要附加消息进行消息的逻辑处理,在网络协议中呈现。

4.2.3 实验结果截图

在这里插入图片描述
在这里插入图片描述

4.3 UDP通信

4.3.1 技术点概述

​ UDP通信是实现当用户连接服务器时,服务器不断发送数据给客户端,客户端的实现通过JavaFx实现绘制线路图,而且数据的获取是通过获取hao123官网的当前的城市温度,爬虫温度数据,并显示当前城市的温度线路图。而且UDP的实时性较高,服务器发送来的数据速度快,能够快速响应。

4.3.2 实现方法步骤

  1. 根据Java爬虫的相应手段在一个有温度的网页上,通过网页调试,查看到温度显示标签,并通过爬虫技术,获取城市名,和温度的大小区间。
  2. 通过UDP技术在服务端利用DatagramSocket编写发送数据程序,而且是每隔两秒发送,所以就用到了线程
  3. 客户端就是获取数据,处理JavaFx的显示逻辑。

4.3.3 实验结果截图

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ZjjP4kNQ-1592821236752)(file:///C:UsersDanielAppDataLocalTempksohtml19216wps12.jpg)]

4.4 通信协议

4.4.1 技术点概述

​ 通信协议就是和Socket提到的那样,处理了这个业务逻辑最后才有整个原貌,在管理多线程的时候需要记住Socket对象,生成了name和Socket的一个实体类进行封装和查询数据,实现数据的分发。通过管理通道来实现分发消息。

​ 消息分为进入聊天室提醒消息、退出聊天室提醒消息、私聊消息,群发消息。

4.4.2 实现方法步骤

  1. 根据消息需要附加消息进行消息的逻辑处理,在网络协议中呈现。
  2. 根据四种情况进入提醒为#name@

​ 退出提醒$name@

​ 私聊%name@linkname#message&

​ 群聊:%name@

4.4.3 实验结果截图

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-In19LejI-1592821236753)(file:///C:UsersDanielAppDataLocalTempksohtml19216wps13.jpg)]

4.5 组播编程

4.5.1 技术点概述

​ 组播关键点是MulticastSocket组播套接字的使用,进而实行网络的多点IP传送,允许多点发送IP和数据包,组播的用途只要体现在服务器只需要发送一次,以广播形式,所有的客户端都能收到,server端的效率大大提高,组播功能的实现是组播告示,当服务器启动时就要监听组播组,利用线程的不断循环接收,然后最重要的是需要两个组播组进行通信,因为如果你利用同一个组播组发送过去,又发送回来,会出现无限发送到同一个组播中,因为他在一个线程发送,用发送给自己,会出错,就要利用两个组播进行通信。

4.5.2 实现方法步骤

  1. 创建一个线程类,当启动服务器就启动这组播MulticasSocket套接字提供端点
  2. 客户端的利用组播告示按钮发送数据,利用线程接收同一个组播组的消息。
  3. 客户端接收到的消息通过上面的标签显示。

4.5.3 实验结果截图

在这里插入图片描述

第五章 总结展望

​ 实验一开始构思了自己的想法,就是做一整个包含五个技术点的项目,小岛的就是聊天室,一开始想用UDP作文信息的交互的,但是没有写过TCP的完整聊天过程逻辑的程序,所以就用了TCP作为主体,然后UDP的温度爬虫查看动能,就是这几天学习到的新知识,爬取温度绘制动态图,UDP获取数据,其实很多东西就是没有想到,很多技术没学到,局限性太差,很难以发挥,好的项目的技术点很多,要多多积累。网络编程给我的最大感触就是通信的逻辑处理,就那个通信协议的技术点就让我弄了半天,逻辑要很清晰才行,而且写项目过程中,不断调试才是最耗时间的,尤其是出错的时候,不断地输出一点点的调试,而组播用的技术比较简单,就是通过发送转发,一开始是想利用组播进行图片的显示,但是由于丢包严重,读取文件出错了,还不清楚哪里有问题,客户发送服务器获取的文件不能用,就只好放弃,改城组播告示,也就是转发字符串,整体下来,文件拷贝最简单,因为实验一做过了,但是文件拷贝最常用的还是我刚才说的发送文件上传文件,但是文件处理不是很理解,加上时间的不足,以后有时间就会去研究一下,整个项目下来,都是用到了多线程,多线程的并发还是很重要的。最后我还是觉得自己的逻辑处理能力还是不是很好,或许是没有认真做的原因,实验开始到完成大概花了四天时间,主要是之前的没时间,虽然项目可以运行他们的功能,但是我觉得还是有很多改进的地方,而且我觉得算法在编程中是非常重要的,网络编程不是很难,最主要的是你的应用能力,一样的技术运用在不一样的场景中,处理的逻辑也会大大不同,所以说实践出真理,多动手做实验,敲敲代码,才能体会到技术的多样性和重要性,而且还要熟练,多去体会不一样的项目,为以后的工作打下基础。

是之前的没时间,虽然项目可以运行他们的功能,但是我觉得还是有很多改进的地方,而且我觉得算法在编程中是非常重要的,网络编程不是很难,最主要的是你的应用能力,一样的技术运用在不一样的场景中,处理的逻辑也会大大不同,所以说实践出真理,多动手做实验,敲敲代码,才能体会到技术的多样性和重要性,而且还要熟练,多去体会不一样的项目,为以后的工作打下基础。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-eIEGgbvb-1592821236758)(file:///C:UsersDanielAppDataLocalTempksohtml19216wps15.jpg)]

最后

以上就是野性夕阳为你收集整理的网络编程实验综合报告第一章 编程内容概述第二章 编程环境第三章 编程实验过程第四章 网络编程技术点第五章 总结展望的全部内容,希望文章能够帮你解决网络编程实验综合报告第一章 编程内容概述第二章 编程环境第三章 编程实验过程第四章 网络编程技术点第五章 总结展望所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(43)

评论列表共有 0 条评论

立即
投稿
返回
顶部