UDP协议下的DatagramSocket和DatagramPacket

1,UDP协议?
面向无连接,数据不安全,但速度快。不区分客户端与服务端。
2,实现通信? (三个达到)

  • IP 简单说就是你电脑地址。
  • 端口 你电脑里面软件的地址。
  • 协议 如何进行通讯。
    DatagramSocket 用来发送和接收数据报包的套接字。
    DatagramPacket 数据报包用来实现无连接包投递服务。
    3,代码实现
    22222童鞋有点仰慕33333童鞋,下面是22222童鞋给33333童鞋发消息。
package c20_1_4;

import java.io.IOException;
import java.io.UnsupportedEncodingException;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetAddress;
import java.net.SocketException;
import java.net.UnknownHostException;
import java.util.Scanner;
 
public class TestSocket {

	// 22222同学给33333同学发
	public static void send() {
		// 数据报插座
		try {
			DatagramSocket ds = new DatagramSocket(22222);
			// 数据包
			System.out.println("请输入消息:");
			Scanner sc = new Scanner(System.in);
			String msg = sc.nextLine();
			byte[] b = msg.getBytes("utf-8");
			DatagramPacket p = new DatagramPacket(b, b.length, InetAddress.getByName("127.0.0.1"), 33333);
			// 发送数据包
			ds.send(p);
			sc.close();
			ds.close();
			System.out.println("已发送。");
		} catch (SocketException e) {
			e.printStackTrace();
		} catch (UnsupportedEncodingException e) {
			e.printStackTrace();
		} catch (UnknownHostException e) {
			e.printStackTrace();
		} catch (IOException e) {
			e.printStackTrace();
		}
	}

	// 33333 得到消息
	public static void get() {
		try {
		    System.out.println("我是33333, 等待你的消息...");
			DatagramSocket ds = new DatagramSocket(33333);
			byte[] get = new byte[1024];
			DatagramPacket p = new DatagramPacket(get, get.length);
			ds.receive(p);
			System.out.println("地址为:" + p.getAddress() + "端口为:" + p.getPort() + "给你发消息啦!");
			System.out.println("消息为: " + new String(get, 0, p.getLength(), "utf-8"));
			ds.close();
		} catch (SocketException e) {
			e.printStackTrace();
		} catch (IOException e) {
			e.printStackTrace();
		}
	}

}

测试一下。


	public static void main(String[] args) {
	    // 33333同学要一直在线,不然数据丢失,等待22222的消息
		get();
	}

在这里插入图片描述

	public static void main(String[] args) {
		send();

发了
UDP协议下的DatagramSocket和DatagramPacket_第1张图片
哈哈哈,恭喜22222同学,33333收到了你的爱意。(・∀・(・∀・(・∀・*)
UDP协议下的DatagramSocket和DatagramPacket_第2张图片

你可能感兴趣的:(JavaWeb)