FileInputStream fileinputstream = new FileInputStream(filename);
//obtains input bytes from chosen file in a file system.
BufferedInputStream inFromFile = new BufferedInputStream(fileinputstream);
//create an internal buffer array
int filelength = (int)filename.length()*2;
byte[] sendData = new byte[filelength]; //set max data array size as two times file's length
inFromFile.read(sendData); //put file byte stream into data array
Date d1 = new Date(); //get date before sending the first packet
int size = 512; //set packet size
for(int offset=0; offset<filename.length(); offset=offset+size){ //loop, for sending packet
DatagramPacket sendPacket = new DatagramPacket(sendData, sendData.length, serverIPAddress, serverPort); //create datagram
sendPacket.setData(sendData,offset,size); //set data range of a packet and offset
clientSocket.send(sendPacket); //send data to client
}
Date d2 = new Date(); //get date after sending the last packet
long transferTime = d2.getTime()-d1.getTime(); //get transfer time
System.out.print("Start Time: " + d1.getTime() + " (ms)" + '\n');
System.out.print("Sending Packet Size: " + size + " (bytes)" + '\n');
System.out.print("End Time: " + d2.getTime() + " (ms)" + '\n');
System.out.print("Transfer Time: " + transferTime + " (ms)");
public static void main(String[] args) throws Exception{
int serverPort = 9876; //set server's port as 9876.
DatagramSocket serverSocket = new DatagramSocket(serverPort); //create a datagramsocket
byte[] receiveData = new byte[2048]; //the max single packet size is 2048
DatagramPacket receivePacket = new DatagramPacket(receiveData, receiveData.length);
//set DatagramPacket
int i=0;
while(true){
serverSocket.receive(receivePacket); //receive packet from client
i=i+1;
System.out.println("The Number: " + i + " packet has been received" + '\n');
//the file has been divided by number of packets to transfer
System.out.println("Received Packet size: " + receivePacket.getLength() + '\n');
InetAddress IPAddress = receivePacket.getAddress(); // get client's IP
int port = receivePacket.getPort(); // get client's port
}
}
}