本章练习
补充练习
1、InetAddress使用
疯狂java讲义第十七章补充习题第1题答案
2、URLEncoder和URLDecoder使用
URLEncoder.encode()
URLDecoder.decode()
需要相同的字符集,才能解码正确
疯狂java讲义第十七章补充习题第2题答案
3、URL、URI、URLConnection和HttpURLConnection
URL
URL构造器
URL方法
equals() 只要url网址相同就返回true
getAuthority() 和getHost()的区别可以看这篇博客:Java URL getAuthority()用法及代码示例 这里简单说一下,如果url的path文字中www.xx.com:80有后面这个80的话,getAuthority()会完整的返回这个:80,而getHost()不会
getContent(),返回一个object不会用,然后另一个Class参数的重载方法,不懂用
getDefaultPort()
getFile()
getHost()
getPort()
getProtocol()
getQuery() Query指的是http://www.xxx.com?a=b里的?后面的东西
getRef()指的是 #后面的东西
getUserInfo() xxx@xxx
hashCode()
openConnection() 有一个方法涉及到Proxy代理的概念,我还不会
openStream()
sameFile() 没懂除了fragment component是什么意思
==setURLStreamHandlerFactory() ==比较奇怪,看不懂
==toExternalForm()==也没搞懂,返回的和toString()的结果一样
toString() 也就是返回完整网址
toURI()
import java.net.*;
import java.util.*;
import java.nio.charset.*;
import java.io.*;
public class Test
{
public static void main(String[] args) throws Exception
{
//URL
String path = "http://clips.vorwaerts-gmbh.de:80/big_buck_bunny.mp4";
URL url1 = new URL(path);
System.out.println(url1.toString());
path = "https://media.w3.org:443/2010/05/sintel/trailer.mp4";
URL url2 = new URL(path);
System.out.println(url1.equals(url2));
System.out.println(url1.getAuthority());
System.out.println(url2.getAuthority());
//System.out.println(url1.getContent());
//System.out.println(url2.getContent());
System.out.println(url1.getDefaultPort());
System.out.println(url2.getDefaultPort());
URL url3 = new URL("https://www.l6tvtv.com");
System.out.println(url3.getDefaultPort());
System.out.println(url1.getFile());
System.out.println(url2.getFile());
//System.out.println(url3.getFile());
System.out.println(url1.getHost());
System.out.println(url2.getHost());
System.out.println(url1.getPath());
System.out.println(url2.getPath());
System.out.println(url1.getPort());
System.out.println(url2.getPort());
System.out.println(url1.getProtocol());
System.out.println(url2.getProtocol());
System.out.println(url1.getQuery());
System.out.println(url2.getQuery());
System.out.println(url1.getRef());
System.out.println(url2.getRef());
System.out.println(url1.getUserInfo());
System.out.println(url2.getUserInfo());
System.out.println(url1.hashCode());
System.out.println(url2.hashCode());
URL url4 = new URL("http://www.baidu.com#aaa");
URLConnection conn = url4.openConnection();
conn.connect();
System.out.println(conn.getContent());
InputStream input = url4.openStream();
byte[] buffer = new byte[1024];
int hasRead = -1;
while((hasRead = input.read(buffer)) != -1)
{
System.out.println(new String(buffer,Charset.forName("utf-8")));
}
System.out.println(url4.sameFile(new URL("http://www.baidu.com#aaa")));
System.out.println(url4.toExternalForm());
System.out.println(url3.toExternalForm());
System.out.println(url4.toString());
URI uri4 = url4.toURI();
System.out.println(uri4);
URI uri3 = url3.toURI();
System.out.println(uri3);
}
}
URI
4、把家里的主机改装成服务器。我搜了一些资料,感觉自己对服务器的了解太少了,根本看不懂什么内网穿透,看不懂什么SSH、Apach,还有什么内网外网,公网ip,局域网。。。。
我需要专门的学习服务器的相关知识,408的知识不够具体,不够专门。找到了两个博客,一个是实现内网穿透(让外网可以访问本机的某个端口号),一个是tomcat原理。都尝试一下。
用浏览器连接自制服务器的对应端口。如果说可以的话,其实浏览器就是使用socket连接服务器的socketserver,然后服务器接收网址,对网址解析,然后返回对应的html文件。这样是可以的,但是涉及到公网就不行了,我也不知道为什么。。。
有两个问题没有解决,一个是外网,就算是用了cpolar也不能访问这个服务器,但实际上是可以访问那个网址的,而且我的服务器也发出信息了,但是网页显示502错误,这个也是我没弄懂的,配置到服务器也一样,外网访问不了,可能tomcat还有其他很多我没学的东西,另一个是ServerSocket(x,x,inetaddress())这个构造器会报错,Net_Bind,没搜到解答
疯狂java讲义第十七章补充习题第4题答案
2021年12月23日下午,我就是创建了一个服务器,无法使用外网访问,浏览器无法显示,只能用localhost进行访问,浏览器可以显示。我又配置到服务器上进行访问,服务器连响应都不响应了
coplar是会响应,但是浏览器显示502错误
使用浏览器的模式,开发一个世界聊天系统。也就是通过网址的参数输入聊天内容,写入对应的文件的下一行,然后返回这个文件,在浏览器显示。
如果写入后,再写入,则内容是叠加的,不会覆盖之前的网页.
直接在这里总结,IO的两种方式,字符流和字节流,当然后面要核对一下对不对,或者有没有更好的。
javaIO的两种方式
结合GUI,做出界面,需要一个网址输入框,选择输出文件位置。然后会显示爬取进度,主要的问题是contentLength为-1的问题需要解决。还可以结合正则表达式,跳动的显示一些内容。
做一个在线视频播放器。结合爬虫,爬取电影的链接。
尝试使用暴力破解一个网站的密码,要有一个可视化界面,尝试的密码不停地跳动。背景黑色,数字颜色调成绿色。
使用URLConnection的get请求和post请求
URL和URLConnection底层是不是采用Socket
.能不能用URL和URLConnection连接ServerSocket
可以尝试用URL和URLConnection连接cpolar的网址
会不会浏览器底层是采用URL?URL有什么用?哪里会使用到URL和URLConnect
以及一些输入输出的类,分别在哪里使用
其他的一些包里的类也是这个问题,分别在哪里使用?
我的技术是实在的垃圾,差太远了,需要加紧时间学习,目标就是能够支持像B站一样的项目,还要能够根据自己的想法,开发独一无二的Ui后端处理,或者网络传输部分的程序
要设计一个封装很好的爬虫选择字段软件
尝试写一个应用,手机安装后,启动会在后台通过Socket把手机图库上传到服务器
专门的图片爬虫
开发一个浏览器,
开发一个搜索引擎
尝试能不能用手机流量连接对应的网址。