参考:https://blog.csdn.net/allenfoxxxxx/article/details/90707505
参考:https://www.jianshu.com/p/ae5e1cee5b04
关于IO流:
参考:https://www.cnblogs.com/xiyixin/p/9715881.html
(了解什么是IO输入输出,IO的最基本的四个抽象类,双字节存储,对数据的包装和转换包装)
主要实现流类:
文件流,缓冲流,数组流,对象流,基本数据类型流........
还有一个字节流转成字符流的转换桥类:InputStreamReder,OutputStreamWriter
IP地址和URL:
InetAddress类:
获取本机属性:
InetAddress i = InetAddress.getLocalHost();
System.out.println(i.getHostName()); //PC-20190328AQZM
System.out.println(i.getHostAddress()); //192.168.0.5
通过域名获取主机属性:
InetAddress[] address = InetAddress.getAllByName("www.baidu.com"); //www.baidu.com/182.61.200.6 www.baidu.com/182.61.200.7
InetAddress i = InetAddress.getByName("www.baidu.com"); //www.baidu.com/182.61.200.6
//servlet中,获取访问者的IP
String remoteAddr = request.getRemoteAddr();
SocketAddress类:
抽象类,是一个套接字(IP+端口号)(用于定位和连接服务器的某个服务)
直接实现类InetSocketAddress:
new InetSocketAddress(InetAddress, port);
URI类:
new URI(...)
URL类:
uri.toURL(); //URI转换成URL对象
file.toURL();
file.toURI().toURL(); //文件对象转换成URL对象
getContent(); ///返回Object文本内容
openStream() ///返回InputStream
openConnection() ///返回URLConnection
URLConnection类:(抽象类)
getInputStream(); ///获取输入流
getOutputStream(); ///获取输出流
connect(); ///连接资源,有些方法可能已经隐式调用,就不必显示调用了
实现类:HttpURLConnection,JarURLConnection
setRequestMethod("POST");
setDoOutput(true);
基于TCP的通信:
socket类:
构造函数:
1.无参构造函数----------后面需要bind方法和connect方法绑定和连接
2.Socket(IP,端口)----------连接服务器
getInputStream() //获取输入流
getOutputStream() //获取输出流
getInetAddress() //获取远程服务器IP地址
getPort //获取远程服务器端口
getLocalAddress() //获取客户本机IP地址
.......
isClose()
close()
ServerSocket类:
构造函数:
ServerSocket(端口,请求队列长度) -----》请求队列长度:客户端请求连接等待数量
bind(InetSocketAdress套接字) //绑定服务器本机套接字
getInputStream() //获取输入流
getOutputStream() //获取输出流
accept() //等待客户端连接阻塞方法,返回一个服务器当前对应连接的客户端Socket对象
close()