1. 本周学习总结

以你喜欢的方式(思维导图、OneNote或其他)归纳总结多网络相关内容。

2. 为你的系统增加网络功能(购物车、图书馆管理、斗地主等)-分组完成

为了让你的系统可以被多个用户通过网络同时使用,需要为你的系统增加网络功能。

2.1 简述你想为你的系统增加什么网络功能?设计思路是什么?

能够通过客户端远程操作该系统。采用了TCP协议及多线程。先创建一个Server类,并在该类中创建一个ServerSocket对象。再创建一个ThreadSocket类实现多线程。

2.2 系统通过网络传递了什么信息?信息的格式是什么?

系统通过网络传递了IO流,信息使用getInputStream()``getOutputStream()获取字节流,然后通过Scanner``PrintWriter包装传输。

2.3 你的网络模块使用了TCP还是UDP技术?模块中的常用类是什么?

使用了TCP技术。
模块中的常用类是ServerSocket类及Socket类、Runnable类及Thread类。

2.4 截图网络通讯部分的源代码与运行截图,并进行简单说明。

注意:如果不会编写客户端,可以使用telnet或者**网络调试助手*做客户端。
先创建了一个Server类,定义其端口8080,在主函数中开启服务端进行接收,然后放到线程中进行处理。





2.5 选做:使用自己编写的客户端访问系统。简述里面的核心代码。

2.6 选做:系统中有出现多线程的冲突或者同步问题吗?

3. 码云与PTA

3.1 统计本周完成的代码量

需要将每周的代码统计情况融合到一张表中。

周次 总代码量 新增代码量 总文件数 新增文件数
3 547 547 12 12
5 971 424 20 8
6 1577 606 29 9
7 2187 1216 41 21
8 2793 606 49 8
9 3040 247 56 7
10 3617 577 63 7
11 3911 294 71 8
12 4409 498 82 11
15 5089 680 92 10

选做:4. 网络学习指导(以下作业内容均为选做)

1. 网络基础

1.1 比较ping www.baidu.comping cec.jmu.edu.cn,分析返回结果有何不同?为什么会有这样的不同?

  • IP地址不一样。一个IP地址对应了一个服务器地址,网址不同,服务器不同,IP就不同。
  • 所用时间不同。服务器地址与本机地址的物理距离不同。
  • ping cec.jmu.edu.cn易出现丢包现象。ping百度不会出现这种情况,而ping jmu屡试屡丢包,怕是学校设备老化????

1.2 telnet bbs.newsmth.net,上面这条命令连接的是远程主机的什么端口号?

telnet服务使用的默认端口为23

1.3 telnet cec.jmu.edu.cn 80,尝试回答:你从屏幕看到一些什么内容?返回的内容是不是cec.jmu.edu.cn的主页内容?尝试使用GET /index HTTP/1.0命令,会返回什么?详见实验任务书题目1。


看到一片黑↑


返回了cec.jmu.edu.cn主页的源代码

1.4 启动ConnectionWatcher, 然后启动若干个可以联网的程序(如QQ, telnet,浏览器等),查看本机上有什么程序联网,使用了什么端口?QQ占用了什么端口和那些远程IP进行交互,这些IP分布地在那里?使用了什么协议进行通信?

  • QQ使用了80端口,这些IP来自广东中山、福建泉州、上海,使用了TCP、UDP协议进行通信。
  • 网易云使用了6003端口
  • exploer使用了443端口

1.5 编写网络程序必不可少的几个信息是什么?

  • IP与端口
  • 客户端与服务器端(Socket、ServertSocket)
  • 网络协议(TCP、UDP)

参考:实验任务书-题目1

2. 编写TCP客户端程序

2.1 参照SocketTest.java编写一个简单的连接远程服务器小程序Client.java,可以接收并显示服务器发送的信息。启动时需要首先在控制台指定远程主机IP与端口号。(截图,出现自己学号)。

2.2 将程序中的网址改成bbs.newsmth.net,端口号改为23,再次观察返回结果?尝试执行telnet bbs.newsmth.net 23,对比返回结果。

2.3 将程序中的网址改成cec.jmu.edu.cn,端口号改为80进一步观察返回结果。没有任何返回结果,为什么?怎么修改代码才能正常显示?选做:为什么会返回乱码?如何解决?

2.4 启动网络调试助手,将其设置为TCP Server,并启动,如下图所示(作业中不要出现下图)

尝试使用Client.java连接该TCP Server,使用该服务器向Client发送信息。(截图关键代码与运行结果)

2.5 回答:现在的Client.java只能接收信息,能否改造Client.java使其可以与服务器进行交互(服务器可以发送信息给Client,Client也可发送信息给服务器),写出大概思路,不要运行截图。

2.6 选做:实现2.5。截取关键代码并进行说明。

参考:实验任务书-题目2

3. ServerSocket与TCP服务器

3.1 简易单线程MenuServer,题目3.1-3.4。(关键代码及运行截图,包含学号)可以使用网络调试助手,将其设置为TCP Client(IP与端口填你的MenuServer的IP与端口),连接你的MenuServer。其中的文件搜索功能为选做。

3.2 多线程MenuServer(截取关键代码证明你这个是多线程服务器,请使用多个telnet连接测试)。

3.3 选做:图形界面的MenuServer

可以控制服务器的启动停止、查看客户端链接的基本信息(IP、端口、链接时间)
拓展:在服务器端断开某个客户端的链接、查看客户端发送的给服务器端的日志记录
参考:实验任务书-题目3
参考:EchoServer.java,ThreadedEchoServer.java (多线程服务器)

4. UDP服务器

4.1 改造3.1或3.2,将其改造成基于UDP的MenuServer。(区别题目3的TCP服务器的关键代码,需截大图、包含学号,不要截图运行界面)。可以使用网络调试助手模拟UDP客户端,将其设置为UDP,要填本机IP与端口也要填远程服务器的IP与端口

4.2 对比相应的基于TCP的MenuServer,主要有何不同?为了连接多个客户端,一定要通过多线程技术吗?如果不使用,怎么区分不同的客户端呢?

参考:UDPServer.java

最新文章

  1. GIT/node使用
  2. z-index学习知识小结
  3. page文件
  4. MVVM模式下实现拖拽
  5. FlashBuilder使用
  6. update操作多张表
  7. window下配置SSH连接GitHub、GitHub配置ssh key(转)
  8. javascript学习教程之---如何从一个tab切换到banner幻灯片的转换
  9. Android编码标准
  10. 第一百零九节,JavaScript面向对象与原型
  11. PAT (Advanced Level) 1024. Palindromic Number (25)
  12. 双网卡+mitmproxy+iptables搭建SSL中间人(支持非HTTPS协议)
  13. hadoop的缺点
  14. spring boot 整合 shiro
  15. js 面试知识点
  16. set,env,export,source,exec傻傻分不清楚?
  17. 阿里云 FTP 无法读取目录问题
  18. Jboss7.1 local EJB lookup problem
  19. 简单易用的安装文件制作工具NSIS的使用demo示例
  20. PCL的PNG文件和计算点云重心

热门文章

  1. DB数据源配置之抽象(〇)
  2. MySQL提升课程 全面讲解MySQL架构设计
  3. Nginx从搭建到配置支持HTTPS
  4. C++调用WMI类查询获取操作系统名
  5. 关于对连接数据库时出现1130-host “**” is not allowed to connect to this MySql/mariadb server 的错误解决方法
  6. 日常工作linux常用命令
  7. django项目创建requirements.txt文件
  8. 让图片在div盒子中水平垂直居中
  9. input输入框类型
  10. scala成长之路(4)compaion object——伴生对象的使用