一切以包裹为中心,字节数组为核心
一、UDP的基本步骤:
1)发送端
package com.sxt.udp;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetSocketAddress;
/*----发送端
*1、创建数据流套接字
* 2、将数据转为字节数组
* 3、打包
* 4、发送包
*5、释放资源
*/
public class UdpClient {
public static void main(String[] args) throws Exception {
System.out.println("----发送方启动中----");
DatagramSocket ds=new DatagramSocket(3333);
String msg="shsxt";
byte[] data=msg.getBytes();
DatagramPacket dp=new DatagramPacket(data,0,data.length,new InetSocketAddress("localhost",9999));
ds.send(dp);
ds.close();
}
}
要点总结:
封装包裹时应加上地址和端口,注意其表示 new InetSocketAddress("localhost",9999));
而不是直接写入"localhost",9999
2)接收端
package com.sxt.udp;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
/*接收端
*1、DatagramSocket(int port)创建数据包套接字
* 2、创建包
* 3、接收数据
* 4、分析数据
* 5、释放资源
*/
public class UdpServer {
public static void main(String[] args) throws Exception {
System.out.println("----接收方启动中-----");
DatagramSocket ds=new DatagramSocket(9999);
byte[] data=new byte[1024];
DatagramPacket dp=new DatagramPacket(data ,0,data.length);
ds.receive(dp);
byte[] datas=dp.getData();
int len=dp.getLength();
String str=new String(datas,0,len);
System.out.println(str);
ds.close();
}
}
二、接收发送数据类型
1)发送端
package com.sxt.udp;
import java.io.BufferedOutputStream;
import java.io.ByteArrayOutputStream;
import java.io.DataOutputStream;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetSocketAddress;
/*----发送端
*1、创建数据流套接字
* 2、将数据类型转为字节数组
* 3、打包
* 4、发送包
*5、释放资源
*/
public class UdpClient {
public static void main(String[] args) throws E