发送端(传输字符串)
package study_04;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetSocketAddress;
import java.net.SocketException;
/*发送端
* 1 使用DatagramSocket 指定端口 创建发送端
* 2 准备数据 转成字节数组
* 3 封装成DatagramPacket包裹 指定目标地址
* 4 发送包裹 send(DatagramPacket p)
* 5 释放资源
*
*
*/
public class UdpClient {
public static void main(String[] args) throws Exception {
System.out.println("发送端启动中");
// 1 使用DatagramSocket 指定端口 创建发送端
DatagramSocket client = new DatagramSocket(8888);
//2 准备数据 转成字节数组
String msg = "测试语句";
byte[] datas = msg.getBytes();
//3 封装成DatagramPacket包裹 指定目标地址
DatagramPacket p = new DatagramPacket(datas, 0,datas.length,new InetSocketAddress("localhost",9999));
//4 发送包裹 send(DatagramPacket p)
client.send(p);
//5 释放资源
client.close();
}
}
接收端(字符串)
package study_04;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.SocketException;
/*接收端
* 1 使用DatagramSocket 指定端口 创建接收端
* 2 准备容器 封装成DatagramPacket包裹
* 3 阻塞式接收数据 recieve(DatagramPacket p)
* 4 分析数据
* byte[] getData()
* getLength()
* 5 释放资源
*/
public class UdpServer {
public static void main(String[] args) throws Exception {
System.out.println("接收端启动中....");
//1 使用DatagramSocket 指定端口 创建接收端
DatagramSocket server = new DatagramSocket(9999);
//2 准备容器 封装成DatagramPacket包裹
byte[] container = new byte[1024 * 10];
DatagramPacket p = new DatagramPacket(container, 0,container.length);
//3 阻塞式接收数据 recieve(DatagramPacket p)
server.receive(p);
//4 分析数据
byte[] datas = p.getData();
int len = datas.length;
System.out.println(new String(datas,0,len));
//5 释放资源
server.close();
}
}
UDP文件传输
package study_04;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import study_04.IOutils;
public class UdpFileServer {
public static void main(String[] args) throws Exception {
System.out.println("接收端启动中");
DatagramSocket server = new DatagramSocket(9999);
byte[] container = new byte[1024 * 60];
DatagramPacket p = new DatagramPacket(container,0,container.length);
server.receive(p);
byte[] datas = p.getData();
IOutils.byteArrayToFile(datas, "2.jpg");
server.close();
}
}
package study_04;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetSocketAddress;
import java.net.SocketException;
import study_04.IOutils;
public class UdpFileClient {
public static void main(String[] args) throws Exception {
System.out.println("发送端启动中.....");
DatagramSocket client = new DatagramSocket(8888);
byte[] datas = IOutils.fileToByteArray("1.jpg");
DatagramPacket p = new DatagramPacket(datas, 0,datas.length,new InetSocketAddress("localhost",9999));
client.send(p);
client.close();
}
}
package study_04;
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
public class IOutils {
public static byte[] fileToByteArray(String filePath) {
File src = new File(filePath);
FileInputStream fis = null;
ByteArrayOutputStream baos = null;
try {
fis = new FileInputStream(src);
baos = new ByteArrayOutputStream();
byte[] flush = new byte[1024 * 10];
int len = -1;
while ((len = fis.read(flush)) != -1) {
baos.write(flush,0,len);
}
baos.flush();
return baos.toByteArray();
} catch (Exception e) {
// TODO: handle exception
}finally {
try {
if (fis != null) {
fis.close();
}
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
try {
if (baos != null) {
baos.close();
}
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
return null;
}
public static void byteArrayToFile(byte[] src,String destPath) {
File dest = new File(destPath);
ByteArrayInputStream bais = null;
FileOutputStream fos = null;
try {
fos = new FileOutputStream(dest);
bais = new ByteArrayInputStream(src);
byte[] flush = new byte[1024 * 10];
int len = -1;
while ((len = bais.read(flush)) != -1) {
fos.write(flush,0,len);
}
fos.flush();
} catch (Exception e) {
// TODO: handle exception
}finally {
try {
if (fos != null) {
fos.close();
}
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}try {
if (bais!= null) {
bais.close();
}
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}