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();
发了
哈哈哈,恭喜22222同学,33333收到了你的爱意。(・∀・(・∀・(・∀・*)