**
接收端
package day15_18; import java.io.*; import java.net.DatagramPacket; import java.net.DatagramSocket; public class Demo02_UdpReceive { public static void main(String[] args) throws Exception { //创建socket对象 DatagramSocket ds = new DatagramSocket(10086); //创建文件要保存的位置 1.jpg是自己写的到达桌面上必须有个类型一样的接收即使你桌面上没有 1.jpg也要写在这里 FileOutputStream fos = new FileOutputStream("C:\Users\阿云\Desktop.jpg"); //打包 DatagramPacket dp = new DatagramPacket(new byte[1024 * 8], 1024 * 8); //while循环接收 坏处不知道什么时候停止异常处理的不是很完美 这里假设最后一组大小不是8192 如果 //是8192的话先采取下面的抛异常处理 等待后续知识更新 while (true) { ds.receive(dp); byte[] date = dp.getData(); int length = dp.getLength(); System.out.println(length); if (length!=8192){ ds.close(); fos.close(); break; } fos.write(date, 0, length); } } }
发送端
package day15_18; import java.io.*; import java.net.DatagramPacket; import java.net.DatagramSocket; import java.net.InetAddress; //DUP发送端 public class Demo02_UdpSent { public static void main(String[] args) throws Exception { //创建发送端socket对象 DatagramSocket ds = new DatagramSocket(); //创建字节输入流读取本地文件--填写你要传东西的地址这里的图片我是放在桌面 InputStream is=new FileInputStream("C:\Users\阿云\Desktop\壁纸.jpg"); //传输动作--先进行while判断是否还有字节再进行不断传输字节流相关知识 byte[] bys = new byte[1024 * 8]; int len; while ((len = is.read(bys)) != -1) { //将数据不断打包进行发送 依次传入数组 数组范围 地址 端口号 DatagramPacket dp = new DatagramPacket(bys, 0, len, InetAddress.getByName("127.0.0.1"), 10086); //socket 对象发送内容 ds.send(dp); } //发送完关闭 is.close(); ds.close(); } }
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)