- TCP协议:全称是Transmission Control Protocol,中文翻译为传输控制协议;
特点:1、需要先建立连接
2、可靠安全不丢失数据,但速度慢
- UDP协议:全称是User Datagram Protocol,中文翻译为用户数据报协议。
特点:1、无需建立连接
2、不可靠,可能丢失数据,但提升了速度
TCP协议:安全,但速度慢 不能接受任何数据丢失现象
UDP协议:不安全,但速度快。 能接受数据丢失现象,要求速度
TCP协议
1、服务器端(持续开启,先出现)
/* * 服务器端必须先编写,先开启 * */ public static void main(String[] args) throws Exception { //1、创建服务器端 ServerSocket ss = new ServerSocket(10001); //2、尝试和客户端进行连接 //如果连接客户端成功,返回一个socket对象 //如果连接客户端失败,返回一个null Socket s = ss.accept();//这句会阻塞线程 //3、读取客户端发来的信息 InputStream input = s.getInputStream(); //展示控制台 byte[] arr = new byte[1024]; int len = input.read(arr); String str = new String(arr, 0, len); System.out.println(str); //4、关闭通信连接 //通过socket对象获取的流不要close,会导致连接提前关闭 s.close(); } |
2、客户端: 127.0.0.1 代表自己
public static void main(String[] args) throws Exception { //1、创建Socket对象, 指明连接哪个IP,哪个端口 Socket s = new Socket("192.168.36.49", 10001); //2、写出数据 (把数据发送给服务器端) OutputStream out = s.getOutputStream(); out.write("这是我的入门案例".getBytes("utf-8")); out.flush();//刷新,会把数据传递给服务器端 //3、关闭通信连接 s.close(); } |
UDP
接收方:(服务器)
public static void main(String[] args) throws Exception { /* * 接收方 * */ //1、创建socket对象 DatagramSocket ds = new DatagramSocket(10002); //2、创建数据包类 //2.1、定义一个字节数组,用于存储数据 byte[] arr = new byte[1024]; //2.2、定义一个数据包类 DatagramPacket dp = new DatagramPacket(arr, arr.length); //3、开始接收 ds.receive(dp);//阻塞线程,等待发送方发送数据 System.out.println(new String(arr,"utf-8")); //4、通信结束 ds.close(); } |
发送方:(客户端)
public static void main(String[] args) throws Exception { /* * 发送方(客户端) * */ //1、创建socket对象 DatagramSocket ds = new DatagramSocket(); //获取接收端的IP地址 InetAddress ia = InetAddress.getByName("127.0.0.1"); //2、创建数据包 //定义一个数组,用来保存待发送数据 byte[] arr = "这是我的测试数据".getBytes("utf-8"); //指明:发送的数据、长度、地址、端口号 DatagramPacket dp = new DatagramPacket(arr, arr.length, ia, 10002); //3、发送数据 ds.send(dp); //4、关闭通信 ds.close(); } |
来源:oschina
链接:https://my.oschina.net/ilovejava/blog/4296467