TCP协议在发送端和接收端之间先建立逻辑连接,再传输数据 它提供了两台计算机之间的可靠无差错的数据传输
TCP协议的三次握手
第一次握手,客户端向服务端发出连接请求第二次握手,服务端向客户端返回响应,通知接收到了请求信号第三次握手,客户端向服务端发出确认,建立连接UDP协议不需要建立连接,直接将数据源,数据和目的地封装在数据包之中,直接发送 不管服务端是否启动,优点是传输速度快但是不安全,主要用于直播
TCP与UDP之间区别与联系:
首先TCP的逻辑通信信道是全双工的可靠信道,而UDP的是不可靠信道TCP传输的安全性更高,建立连接之前不传输数据,而UDP的安全性低TCP有确认、窗口、重传与拥塞控制机制,但占用系统资源高TCP建立连接的时间长,容易被利用,实现DOS、DDOS等攻击UDP不需要建立连接,传输速度非常快,但不可靠不稳定,容易丢包TCP首部开销20字节,UDP首部开销8字节ServerSocket类可以用于创建服务端,等待客户端Socket类的连接
ServerSocket server = new ServerSocket(port:55665);常用方法
accept(); 等待客户端的连接,返回的是Socket类 OutputStream getOutputStream(); 返回的是指向通信的另一端点的输出流 InputStream getInputStream(); 返回的是指向通信的另一端点的输入流 void close(); 关闭套接字常用方法与ServerSocket类相差无几,但构造方法中还需要传入目标服务端的ip地址
Socket socket = new Socket(192.168.102.228,55665);用于描述ip地址的类,通过getByName的类方法将ip地址转为该类的对象
InetAddress ip = InetAddress.getByName(192.168.102.228);在UDP协议中,通过数据包DatagramPacket的getAddress方法,可以得到数据包来自哪个ip 在TCP协议中,通过套接字Socket的getInetAddress方法,可以得到套接字连接的ip地址
使用UDP协议的类,数据发送的成功或者失败与数据报无关