//发送数据
//UDP协议发送数据
package com.example.mysocketnet.a02UDPdemo;
import java.io.IOException;
import java.net.*;
public class SendMessageDemo {
public static void main(String[] args) throws IOException {
//发送数据
//1.创建DatagramSocket对象(快递公司)
//细节:
//绑定端口,以后我们就是通过这个端口往外发送数据
//空参:所有可用的端口中随机一个进行使用
//有参:指定端口号进行绑定
DatagramSocket datagramSocket = new DatagramSocket();
//2.打包数据
String str = "你好....";
byte[] bytes =str.getBytes();
InetAddress address = InetAddress.getByName("127.0.0.1");
int port = 10086;
DatagramPacket datagramPacket = new DatagramPacket(bytes, bytes.length,address,port);
//3.发送数据
datagramSocket.send(datagramPacket);
/***
* UDP协议是面向无连接的 (我管你有没有建立 我直接发就行 不管你收不收的到)
*/
//4.释放资源
datagramSocket.close();
}
}
接收数据
//接收数据
package com.example.mysocketnet.a02UDPdemo;
import java.io.IOException;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetAddress;
public class ReceiveMessageDemo {
public static void main(String[] args) throws IOException {
//接收收据
//1.创建DatagramSocket对象(快递公司)
//细节
//在接收的时候,一定要绑定端口
//而且绑定的端口,一定要和发送的端口保持一致
DatagramSocket ds = new DatagramSocket(10086);
//2.接收数据包
byte[] bytes = new byte[1024];
DatagramPacket dp = new DatagramPacket(bytes,bytes.length);
/**
* 该方法是阻塞的
* 程序执行到这一步的时候,会在这里死等
* 等发送端发送消息
*/
ds.receive(dp);
//3.解析数据包
byte[] data = dp.getData();
int length = dp.getLength();
int port = dp.getPort();
InetAddress address = dp.getAddress();
System.out.println("接收到数据"+new String(data,0,length));
System.out.println("该数据是从"+address+"这台电脑中的"+port+"发出的");
//4.释放资源
ds.close();
}
}
运行结果: