日志文章

2019-12-28 aflfte2011

UDP发送与接收文件

package com.aflfte.udp;

import java.io.BufferedInputStream;
import java.io.ByteArrayOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.InputStream;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetSocketAddress;

/**
 * UDP发送端 基本流程
 * 1、使用DataSocket 指定端口创建发送端
 * 2、准备数据 一定要转成字节数组
 * 3、将数据封装成DatagramPacket包裹,需要指定目的地(IP地址+端口);
 * 4、发送包裹send(DatagramPacket p)
 * 5、释放资源
 * 
 * 
 * 
 * 
 * @author jinhao
 *
 */
public class UdpPhotoClient {
public static void main(String[] args) throws Exception {
System.out.println("发送方启动中。。。。。。");
//1、使用DatagramSocket 指定端口创建发送端
DatagramSocket client=new DatagramSocket(8866);
//2、准备数据 一定要转成字节数组
File f=new File("F:/jinhao/Desktop/石笼网.jpg");
InputStream fou=new BufferedInputStream(new FileInputStream(f));
ByteArrayOutputStream bao =new ByteArrayOutputStream();
byte[] flush=new byte[1024];
int len=-1;
while((len=fou.read(flush))!=-1) {
bao.write(flush,0,len);
}
bao.flush();
byte[] datas=bao.toByteArray();
//3、将数据封装成DatagramPacket包裹,需要指定目的地(IP地址+端口);
DatagramPacket packet=new DatagramPacket(datas, 0, datas.length,new InetSocketAddress("localhost",9999));
//4、发送包裹send(DatagramPacket p)
client.send(packet);
//5、释放资源
bao.close();
fou.close();
client.close();

}
}




package com.aflfte.udp;

import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.ByteArrayInputStream;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.DatagramPacket;
import java.net.DatagramSocket;

/**
 * UDP接收端  基本流程
 * 1、使用DataGramSocket创建指定端口接收端
 * 2、准备容器封装成DataGramPacket包裹
 * 3、阻塞式接收包裹receive(DataGramPacket p)
 * 4、分析数据
 *    byte[] getData();
 *    getLength();
 * 5、释放资源
 * 
 * @author jinhao
 *
 */
public class UdpPhotoServer {
public static void main(String[] args) throws IOException {
System.out.println("开始接收。。。。");
//1、使用DataGramSocket创建指定端口接收端
DatagramSocket server=new DatagramSocket(9999);
//2、准备容器封装成DataGramPacket包裹
byte[] container=new byte[1024*60];
DatagramPacket packet=new DatagramPacket(container,0, container.length);
//3、阻塞式接收包裹receive(DataGramPacket p)
server.receive(packet);
/** 4、分析数据
*    byte[] getData();
*    getLength();
**/
byte[] datas=packet.getData();
//int len=packet.getLength();
File f=new File("12.jpg");
OutputStream ou=new BufferedOutputStream(new FileOutputStream(f));
InputStream bin=new BufferedInputStream(new ByteArrayInputStream(datas));
byte[] flush=new byte[1024];
int le=-1;
while((le=bin.read(flush))!=-1) {
ou.write(flush,0,le);
}
ou.flush();
// 5、释放资源
ou.close();
bin.close();
server.close();
}
}

« UDP实现在线聊天模型 | UDP发送与接收数据»