import java.io.IOException; import java.net.DatagramPacket; import java.net.DatagramSocket; import java.net.InetAddress; import java.net.ServerSocket; import java.net.Socket; import java.net.SocketException; import java.net.UnknownHostException; import java.util.Scanner; import config.config; import network.*; import peerTable.*; import services.*; import self.Self; public class main { public static void main(String[] args) { Self.init(); String ID = Self.getId(); DatagramSocket mySocket= null; try { mySocket = new DatagramSocket(4242); //mySocket.setBroadcast(true); } catch (SocketException e1) { System.out.println("Can not bind socket"); e1.printStackTrace(); } SimpleMessageHandler[] handlers = new SimpleMessageHandler[1]; handlers[0]= new HelloHandler(); //handlers[1]= new HelloHandler(); //handlers[2]= new DebugHandler(); //handlers[1]= new SynHandler(); //handlers[2]= new GlobalListHandler(); PeerTable table = new PeerTable(config.helloInt); MuxDemux dm = new MuxDemux(handlers, mySocket); dm.ID=ID; table.setMux(dm); HelloSender helloSender =new HelloSender(dm); helloSender.table =table; //ListSender listSender =new ListSender(); //listSender.table =table; /* to add FileHandler fh = new FileHandler(); fh.table=table; ServingService ss = new ServingService(); ss.f=fh; */ //DownloadService dw = new DownloadService(); //dw.table=table; //table.dw=dw; //Thread dwt = new Thread(dw); //dwt.start(); /* * Thread sst =new Thread(ss); Thread fht =new Thread(fh); sst.start(); fht.start(); */ //((SynHandler)handlers[1]).lst= listSender; //((SynHandler)handlers[1]).ID= ID; ((HelloHandler)handlers[0]).ID= ID; ((HelloHandler)handlers[0]).table = table; dm.table=table; new Thread(handlers[0]).start(); //new Thread(handlers[1]).start(); //new Thread(handlers[2]).start(); //new Thread(handlers[3]).start(); //new Thread(handlers[4]).start(); new Thread(dm).start(); HTTPServer http = new HTTPServer(); http.table = table; http.start(); while (true) { String payload; try { payload = dm.getNext(); byte[] byteArray = payload.getBytes(); try { DatagramPacket dp = new DatagramPacket(byteArray, byteArray.length, InetAddress.getByName("255.255.255.255"), 4242); try { mySocket.send(dp); if (config.pmessageOut)System.out.println("Message send : "+payload); //System.out.println("Message send : "); } catch (IOException e) { e.printStackTrace(); } } catch (UnknownHostException e) { e.printStackTrace(); } } catch (InterruptedException e1) { // TODO Auto-generated catch block e1.printStackTrace(); } } } }