发送端
package com.qf.demo4;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetAddress;
import java.net.SocketException;
public class Send {
public static void main(String[] args) {
// 1
DatagramSocket socket =null;
FileInputStream fis = null;
try {
socket = new DatagramSocket();
// 2
fis = new FileInputStream(new File("D:\\A.java"));
int num = 0;
byte[] bs = new byte[1024];
while((num = fis.read(bs))!=-1){
DatagramPacket packet = new DatagramPacket(bs, num, InetAddress.getLocalHost(), 5588);
socket.send(packet);
}
// 因为没有传输完毕的标志, 随后在 传输入一个标志
String string = "传输完毕";
DatagramPacket packet = new DatagramPacket(string.getBytes(), string.getBytes().length,InetAddress.getLocalHost(), 5588);
socket.send(packet);
} catch (SocketException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}finally {
if(socket!= null){
socket.close();
}
if(fis!=null){
try {
fis.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}
}
接收端
package com.qf.demo4;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.SocketException;
public class Receive {
public static void main(String[] args) {
// 1
DatagramSocket socket = null;
FileOutputStream fos =null;
try {
socket = new DatagramSocket(5588);
fos = new FileOutputStream(new File("a.java"));
while(true){
// 没有结束 循环的标志
byte[] buf = new byte[1024];
DatagramPacket packet = new DatagramPacket(buf, buf.length);
socket.receive(packet);
String string = new String(packet.getData(), 0, packet.getLength());
if("传输完毕".equals(string)){
break;
}
fos.write(packet.getData(), 0, packet.getLength());
fos.flush();
}
System.out.println("接收方接收数据完毕");
} catch (SocketException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}finally {
if(socket!= null){
socket.close();
}
if(fos!=null){
try {
fos.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}
}