java是Internet上的语言,从语言级上提供了对网络应用程序的支持。
java提供的网络类库,联网的底层细节被隐藏在java的本机安装系统里,由JVM进行控制。
并且java实现了一个跨平台的网络库,程序员面对的是一个统一的网络编程环境。
0.1 软件架构
1) C/S架构:全称为Client/Server结构,是指客户端和服务器结构。常见程序有QQ,美团app,360安全卫士等。
2) B/S架构:全称为Browser/Server结构,是指浏览器和服务器结构。常见浏览器有IE、谷歌、火狐等。
* 两种架构都离不开网络的支持,网络编程,就是在一定的协议下,实现两台计算机的通信的程序。
0.2 网络通信,需要解决的三个问题:
1) 如何准确定位网络的一台或多台主机
2) 如何定位主机上的特定的应用
3) 如何可靠、高效地进行数据传输
0.3 实现网络传输的三个要素:
1) IP地址
2) 端口号
3) 网络通信协议
1. IP
1.1 作用
IP地址用来给网络中的一台计算机设备做唯一的编号
1.2 IP地址分类
1) 分类
IPv4
IPv6
2) 分类
公网地址(万维网)和私有地址(局域网)
1.3 本地回路地址: 127.0.0.1
1.4 域名:便捷的记录ip地址
www.baidu.com www.bilibili.com
通过域名服务器(DNS, Domain Name System)负责将域名转化为IP地址,才能和主机建立连接。
2. 端口号
2.1 作用
可以唯一标识主机中的进程(应用程序)
范围:0~65535
3. 网络通信协议
3.1 目的
实现可靠而高效的数据传输
3.2 网络参考模型
OSI参考模型:将网络分为7层,过于理想化,没有实施起来。
TCP/IP参考模型:将网络分为5层,应用层、传输层、网络层、物理层、数据链路层。
4. InetAddress的使用
4.1 作用
InetAddress类的一个实例就代表一个具体的ip地址。
4.2 实例化方式
getByName(String host) //获取指定IP对应的InetAddress实例。 host 域名或IP地址
getLocalHost() //获取本地IP对应的InetAddress实例
4.3 常用方法
getHostName() //获取域名
getHostAddress() //获取IP地址
5. Socket
5.1 常用方法
//Socket(InetAddress address, int port) throws IOException
//客户端创建一个Socket对象
Socket socket = new Socket(InetAddress.getLocalHost(), port);
//服务端创建一个Socket对象
ServerSocket serverSocket = serverSocket(port);
Socket socket = socketSocket.accept();
//获取输入输出流对象
OutputStream os = socket.getOutputStream;
InputStream is = socket.getInputStream;
socket.shutdownOutput() //客户端表明不再继续发送数据,否则服务端接受数据会一直阻塞。
new ByteArrayOutputStream() //维护了一个byte[],防止接收文本数据时因为一个字符被数组分割而乱码。