当前位置: 代码迷 >> Web前端 >> UDP 兑现文件传输
  详细解决方案

UDP 兑现文件传输

热度:356   发布时间:2012-08-28 12:37:01.0
UDP 实现文件传输
//接收端


import java.io.BufferedOutputStream;
import java.io.DataOutputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.net.DatagramPacket;
import java.net.DatagramSocket;

public class UdpReceive {

public static DatagramSocket dataSocket;
public static final int PORT = 8;
public static byte[] receiveByte;
public static DatagramPacket dataPacket;
public static void main(String[] args) throws IOException {
dataSocket = new DatagramSocket(PORT);
DataOutputStream fileOut = new DataOutputStream(new BufferedOutputStream(new FileOutputStream("D:\\TDDOWNLOAD\\b.txt")));
int i = 0;
while(i == 0){//无数据,则循环
receiveByte = new byte[1024];
dataPacket = new DatagramPacket(receiveByte, receiveByte.length);
dataSocket.receive(dataPacket);
i = dataPacket.getLength();
//接收数据
if(i > 0){
//指定接收到数据的长度,可使接收数据正常显示,开始时很容易忽略这一点
fileOut.write(receiveByte,0,i);
fileOut.flush();
i = 0;//循环接收
}
}
}

}


//发送端


import java.io.BufferedInputStream;
import java.io.DataInputStream;
import java.io.FileInputStream;
import java.io.IOException;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.Inet4Address;
import java.util.Date;
import java.util.concurrent.TimeUnit;

public class UdpSend {

public static DatagramSocket dataSocket;
public static final int PORT = 8;
public static byte[] sendDataByte;
public static DatagramPacket dataPacket;
public static void main(String[] args) throws IOException ,InterruptedException{
String filePath = "D:\\a.txt";
DataInputStream fis = new DataInputStream(new BufferedInputStream(new FileInputStream(filePath)));
dataSocket = new DatagramSocket(PORT + 1);
sendDataByte = new byte[1024];
int read = 0;
long a = new Date().getTime();
while(true){
if(fis != null){
read = fis.read(sendDataByte);
}
if(read == -1){
System.out.print("用时:");
System.out.println(new Date().getTime() - a);
break;
}
dataPacket = new DatagramPacket(sendDataByte,sendDataByte.length,(Inet4Address) Inet4Address.getByName("localhost"), PORT);
dataSocket.send(dataPacket);
TimeUnit.MICROSECONDS.sleep(1);//限制传输速度
}
}

}
  相关解决方案