package udpserver; /** * * @author shishir */ import java.io.*; import java.net.*; import java.util.Arrays; public class UDPServer { /** * @param args the command line arguments */ public static void main(String[] args) throws Exception { // TODO code application logic here int port = 8080; byte[] senddata, receivedata; DatagramPacket out = null; DatagramPacket in = null; DatagramSocket socket = new DatagramSocket(port); while (true) { // get port, address from vlient receivedata = new byte[1000]; in = new DatagramPacket(receivedata, receivedata.length); socket.receive(in); InetAddress srcaddress = in.getAddress(); int srcport = in.getPort(); String f = new String(in.getData()); System.out.println(f); // send filenames to client String dirname = "D:\\WORKING\\CODE\\UVA\\contest\\Tokyo 2014"; File f1 = new File(dirname); File direct[] = f1.listFiles(); StringBuilder sb = new StringBuilder("\n"); int c = 0; for (int i = 0; i < direct.length; i++) { if (direct[i].canRead() && (direct[i].toString()).endsWith(".cpp")) { c++; } } sb.append(c + " .cpp files found\n\n"); for (int i = 0; i < direct.length; i++) { if (direct[i].toString().endsWith(".cpp")) { sb.append(direct[i].getName() + " ,size :" + direct[i].length() + " Bytes\n"); } } sb.append("Enter the filename for download: "); senddata = (sb.toString()).getBytes(); out = new DatagramPacket(senddata, 0, senddata.length, srcaddress, srcport); socket.send(out); // get file name for downloading in = new DatagramPacket(receivedata, receivedata.length); String fname = new String(in.getData()); int idx = 0; boolean flag = false; for (int i = 0; i < direct.length; i++) { if (direct[i].getName().toString().equalsIgnoreCase(fname)) { idx = i; flag = true; break; } } if (!flag) { senddata = ("File not found!!\n").getBytes(); out = new DatagramPacket(senddata, senddata.length, srcaddress, srcport); socket.send(out); } else { //copy existing file File copy = new File(direct[idx].getAbsolutePath()); FileReader fr = new FileReader(copy); BufferedReader buf = new BufferedReader(fr); sb = new StringBuilder(); String s = null; while ((s=buf.readLine())!=null) { sb.append(s); } if(buf.readLine()==null) System.out.println("File read successfully done"); senddata = (sb.toString()).getBytes(); out = new DatagramPacket(senddata,senddata.length,srcaddress,srcport); socket.send(out); } } } }