Java第10次实验(网络)

绿/搜索【编程进阶路】 联系小编

  • 常见错误:网络调试助手显示bind() failed表示相应端口已经被其他程序占用,请结束该程序。

3. ServerSocket与TCP服务器(考核)


任务:

  1. 单线程MenuServer服务器

常见错误:Eclipse中显示Address already in use ,端口已经被占用,先关闭占用该端口的程序。

验证:在另外一台电脑上启动网络调试助手,连接你编写的服务器端。注意:IP地址能设定为127.0.0.1吗?

  1. 多线程MenuServer服务器

在单线程MenuServer程序中,服务器端只能允许一个客户端连接,如何允许服务器同时连接多个客户端?

  1. 进阶:建立基于TCP的客户端/服务端一体化程序

现在通过网络调试助手可以实现向服务器发送消息,同时从服务器接受消息。改造Client.java为其增加GUI界面,实现同时收发消息的功能。

验证:

用你编写的客户端或服务器与隔壁同学的编写的服务器与客户端,在不同的电脑上运行并进行通信。

考核1完成任务:

实验任务书中的MenuServer,服务器对连接进来的客户端发送字符菜单。菜单中包含如下功能:

  1. 1.显示服务器当前时间2.显示客户端的IP与端口3.退出菜单。功能2请查询Socket文档。

  2. 可以根据客户端发送过来的字符串,执行相应的功能并将结果返回给客户端。

  3. 可以重复显示菜单,直到客户端选择退出菜单

  4. 思考1:如果碰到中文乱码?怎么解决?

  5. 思考2:当客户端选择退出菜单,服务器也终止运行从而无法被其他客户端访问。如何改进?

考核2:

  • 将MenuServer改造成多线程服务器ThreadMenuServer。

特别考核3:

改写题目2的TCPClient.java,连接MenuServer。观察返回结果?思考:如何让TCPClient.java既可向MenuServer发送命令,同时还能接收MenuServer的信息。提示:使用多线程。

参考资料:

EchoServer.java,ThreadedEchoServer.java (多线程服务器)

思考

前面实验中,服务器与客户端之间传递的都是字符。如果希望服务器与客户端之间传递字节,比如传递一个对象或一个字节数组。要怎么实现?

4. 访问HTTP服务器


使用Socket类访问Web服务器

  • 目的:编写可以读写Web网页的程序。

  • 改造TCPClient.java,让其可以访问Web服务器上页面。

编写该程序时,需要了解简单的HTTP协议。即,如何使用符合HTTP协议的命令向Web服务器请求一个网页。

可使用Firefox的开发者工具,可查看使用HTTP访问Web服务器的请求头(request header)。具体步骤如下:

1.打开Firefox按F12,启动开发者工具,点击“网络”标签。然后输入网址访问。

2.在"网络"标签点击"HTML",找到相应条目。右键点击该条目,选择“复制”-“复制请求头”。

请求头中的关键信息如下:

GET / HTTP/1.1

Host: cec.jmu.edu.cn

改造TCPClient.java,使用请求头中的关键信息实现对指定网址的访问。

注意:除了上面两行字符串。还应输出一个空行(使用out.println()实现。)

3.网页中的中文是乱码,如何解决?提示:使用InputStreamReader。

4.进一步改造TCPClient.java,将网页下载存为文件。

使用URL类访问Web服务器

HTTP进阶:

  • 使用JDK 11中的HTTP Client来改写URLReader.java

  • 编写客户端访问jwc.jmu.edu.cn网站,尝试用客户端程序能直接使用网页上的搜索功能。

  • 使用jsoup实现简单网络爬虫

5. UDP服务器(考核)


使用UDP改造前面的MenuServer与对应的MenuClient

6. 综合实验:使用正则表达式进行网页信息爬取


想要编写一个程序,可以将指定网址的所有普通链接('‘)与图片链接(’

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传')都抓取下来。

[

完成此程序需要进行复杂的字符串匹配,需要使用正则表达式进行匹配。](https://blog.csdn.net/…)

[

写在最后

学习技术是一条慢长而艰苦的道路,不能靠一时激情,也不是熬几天几夜就能学好的,必须养成平时努力学习的习惯。所以:贵在坚持!

最后再分享的一些BATJ等大厂20、21年的面试题,把这些技术点整理成了视频和PDF(实际上比预期多花了不少精力),包含知识脉络 + 诸多细节,由于篇幅有限,上面只是以图片的形式给大家展示一部分。

蚂蚁金服三面直击面试官的Redis三连,Redis面试复习大纲在手,不慌

Mybatis面试专题

蚂蚁金服三面直击面试官的Redis三连,Redis面试复习大纲在手,不慌

MySQL面试专题

蚂蚁金服三面直击面试官的Redis三连,Redis面试复习大纲在手,不慌

并发编程面试专题

包含知识脉络 + 诸多细节,由于篇幅有限,上面只是以图片的形式给大家展示一部分。

[外链图片转存中…(img-XR4Bjh2G-1722056283386)]

Mybatis面试专题

[外链图片转存中…(img-PWzs5JF4-1722056283386)]

MySQL面试专题

[外链图片转存中…(img-TKHC2L9w-1722056283387)]

并发编程面试专题

  • 4
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值