绿/搜索【编程进阶路】 联系小编
- 常见错误:网络调试助手显示
bind() failed
表示相应端口已经被其他程序占用,请结束该程序。
3. ServerSocket与TCP服务器(考核)
任务:
- 单线程
MenuServer
服务器
常见错误:Eclipse中显示Address already in use
,端口已经被占用,先关闭占用该端口的程序。
验证:在另外一台电脑上启动网络调试助手,连接你编写的服务器端。注意:IP地址能设定为127.0.0.1吗?
- 多线程
MenuServer
服务器
在单线程MenuServer程序中,服务器端只能允许一个客户端连接,如何允许服务器同时连接多个客户端?
- 进阶:建立基于TCP的客户端/服务端一体化程序
现在通过网络调试助手可以实现向服务器发送消息,同时从服务器接受消息。改造Client.java为其增加GUI界面,实现同时收发消息的功能。
验证:
用你编写的客户端或服务器与隔壁同学的编写的服务器与客户端,在不同的电脑上运行并进行通信。
考核1完成任务:
实验任务书中的MenuServer,服务器对连接进来的客户端发送字符菜单。菜单中包含如下功能:
-
1.显示服务器当前时间、2.显示客户端的IP与端口、3.退出菜单。功能2请查询
Socket
文档。 -
可以根据客户端发送过来的字符串,执行相应的功能并将结果返回给客户端。
-
可以重复显示菜单,直到客户端选择退出菜单。
-
思考1:如果碰到中文乱码?怎么解决?
-
思考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服务器
-
演示:
URLReader.java
。给定网址,可以直接读取网页。
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(实际上比预期多花了不少精力),包含知识脉络 + 诸多细节,由于篇幅有限,上面只是以图片的形式给大家展示一部分。
Mybatis面试专题
MySQL面试专题
并发编程面试专题
包含知识脉络 + 诸多细节,由于篇幅有限,上面只是以图片的形式给大家展示一部分。
[外链图片转存中…(img-XR4Bjh2G-1722056283386)]
Mybatis面试专题
[外链图片转存中…(img-PWzs5JF4-1722056283386)]
MySQL面试专题
[外链图片转存中…(img-TKHC2L9w-1722056283387)]
并发编程面试专题