TCP与UDP的区别
1.UDP协议特点: 用户数据报协议(User Datagram Protocol)
①不需要连接
②速度快
③有大小限制一次最多发送64k
④数据易丢失
1.11UDP协议通信场景(速度要求高,数据完整性要求不高)
①直播
②语音通话
③视频会话
1.12代码演示:
package udp_demo;
import java.io.IOException;
import java.net.*;
/*
目的:编写UDP的发送端
步骤:1.创建发送端
2.创建数据包
3.发送数据
4.关闭资源
*/
public class UDPSender {
public static void main(String[] args) throws IOException {
//1.创建发送端
DatagramSocket socket = new DatagramSocket();
//2.创建数据包
byte[] bt = "你好UDP".getBytes();
DatagramPacket packet = new DatagramPacket(bt,0,bt.length, InetAddress.getLocalHost(),10028);
//3.发送数据
socket.send(packet);
//4.关闭资源
socket.close();
}
}
package udp_demo;
import java.io.IOException;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
/*
目的:编写UDP的接收端
步骤:1.创建接收端
2.创建空的数据包
3.接收数据
4.数据转换并输出
5.关闭资源
*/
public class UDPReceiver {
public static void main(String[] args) throws IOException {
//1.创建接收端
DatagramSocket socket = new DatagramSocket(10028); //要写端口号
//2.创建空的数据包
byte[] buf = new byte[1024];
DatagramPacket packet = new DatagramPacket(buf,buf.length);
//3.接收数据
socket.receive(packet);
//4.获取接收到的数据包长度
int len = packet.getLength();
System.out.println("接收端收到:" + new String(buf,0,len)); //将数组转为字符串
//5.关闭资源
socket.close();
}
}
2.TCP协议特点:传输控制协议(Transmission Control Protocol)
①需要连接
②速度慢
③没有大小限制
④数据不易丢失
2.21TCP协议通信场景(速度要求不高,数据完整性要求高)
①下载
②扫码支付
③金融等数据通信
package tcp_demo;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.Socket;
/*
目的:编写TCP的客户端
步骤:1.创建客户端
2.得到输出流写数据
3.得到输入流读数据
4.关闭资源
*/
public class TCPClient {
public static void main(String[] args) throws IOException {
System.out.println("客户端启动了");
//1.创建客户端
Socket socket = new Socket("127.0.0.1",10028);
//2.得到输出流写数据
OutputStream out = socket.getOutputStream();
out.write("你好啊".getBytes());
//3.得到输入流读数据
InputStream in = socket.getInputStream();
byte[] buf = new byte[1024];
int len = in.read(buf);
System.out.println("客户端收到:" + new String(buf,0,len));
//4.关闭资源
in.close();
out.close();
socket.close();
}
}
package tcp_demo;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.ServerSocket;
import java.net.Socket;
/*
目的:编写TCP的服务端
步骤:1.创建服务端
2.同意客户请求
3.得到输入流读取数据
4.得到输出流写数据
5.关闭资源
*/
public class TCPServer {
public static void main(String[] args) throws IOException {
System.out.println("服务器端启动了");
//1.创建服务器端
ServerSocket serverSocket = new ServerSocket(10028);
//2.同意客户端的请求
Socket socket = serverSocket.accept();
//3.得到输入流读取数据
InputStream in = socket.getInputStream();
byte[] buf = new byte[1024];
int len = in.read(buf);
System.out.println("服务器端:" + new String(buf,0,len));
//4.得到输出流写数据
OutputStream out = socket.getOutputStream();
out.write("老地方见".getBytes());
//5.关闭资源
out.close();
in.close();
socket.close();
serverSocket.close();
}
}