网络编程概述
*在通信协议下不同计算机上运行的程序,可以进行数据传输。
--网络编程三要素
IP地址 :设备在网络中的地址,是唯一的标识。
ipv4:点分十进制表示
ipv6:冒分十六进制表示
端口:应用程序在设备中唯一的标识。
端口号:用两个字节表示的整数,它的取值范围是0~65535.
协议:数据在网络中传输的规则,常见的协议有UDP和TCP协议。
UDP: 用户数据报协议。
udp是面向无连接通讯协议
速度快,有大小限制,一次最多发送64k,数据不安全,易丢失数据。
TCP: 传输控制协议
TCP协议是面向连接的通讯协议。
速度慢,没有大小限制,数据安全。
InetAddress类
static InetAddress getByName(String host) 确定主机名称的IP地址,host可以是机器名称,也可以是IP地址
String getHostName() 获取此IP地址的主机名。
String getHoseAddress() 返回文本显示中的IP地址字符串
UDP
--发送端 : 1. 创建 DatagramSocket对象;
2.创建DatagramPacket对象
3.DatagramSocket对象 . send(DatagramPacket对象)。
4.DatagramSocket对象.close();
--接收端 : 1.创建DatagramSocket对象 构造参数填写端口。
2.创建DatagramPacket对象
3.DatagramSocket对象 . receive(DatagramPacket对象);
4.DatagramPacket对象.getData();//获取数据
5.DatagramSocket对象.close();
要先运行接收端,在运行发送端。
如果接收端在启动之后没有接收到数据,那么会死等(阻塞)
在接受数据的时候,需要调用一下getLength方法,表示接收到了多少字节。
UDP的三种通讯方式 : 1.单播
2.组播
3.广播 广播地址 255.255.255.255
TCP
TCP是一种可靠的网络协议,他在通信的两端各建一个Socket对象
发送数据的步骤: 1.创建客户端的Socket对象(Socket)与指定的服务器连接
Socket(String host,int port) 地址 和 端口
2.获取输出流,写数据
OutPutStreamOutPutStream();
。wirte();
3. 释放资源
void close();
接收数据的步骤: 1. 创建服务器端的Socket对象(ServerSocket)
ServerSocket(int port); 端口
2.监听客户端连接,返回一个Socket对象
Socket accept();
3.获取输入流,读数据,并把数据显示在控制台
InputStream getInputStream();
4.释放资源。
void close();
1.accept()方法是阻塞的,作用是等待客户端的连接
2.客户端创建对象并连接服务器,此时是通过三次握手协议保证跟服务器之间连接。
3.针对客户端来说是输出流,针对服务器来讲,是输入流。
4.read()方法也是阻塞的。
5.在关流的时候,还多了一个往服务器写结束标记的动作。
6.结束时候会有四次挥手协议保证连接终止。
UUID类
UUID是一个表示不可变的通用唯一标识符的类。
UUID.RandomUUID(); 随机生成名字。