Advertisement
Guest User

OLA TOINO

a guest
Oct 21st, 2018
96
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 23.43 KB | None | 0 0
  1. import javax.xml.crypto.Data;
  2.         import java.awt.*;
  3.         import java.io.Serializable;
  4.         import java.net.*;
  5.         import java.io.IOException;
  6.         import java.sql.SQLOutput;
  7.         import java.util.ArrayList;
  8.         import java.util.Scanner;
  9.         import java.io.*;
  10.         import static java.lang.Thread.sleep;
  11.  
  12. class User implements Serializable {
  13.     private String username, password, user_type;
  14.  
  15.     public User(String username, String password, String user_type) {
  16.         this.username = username;
  17.         this.password = password;
  18.         this.user_type = user_type;
  19.     }
  20.  
  21.     public String getUsername() {
  22.         return username;
  23.     }
  24.  
  25.     public String getPassword() {
  26.         return password;
  27.     }
  28.  
  29.     public String getUser_type() { return user_type; }
  30.  
  31.     public void setUser_type(String user_type) {
  32.         this.user_type = user_type;
  33.     }
  34. }
  35.  
  36. class Music implements Serializable {
  37.     private String artist, genre, album, name;
  38.     private int duration;
  39.  
  40.     public Music(String artist, String genre, String album, String name, int duration) {
  41.         this.artist = artist;
  42.         this.genre = genre;
  43.         this.album = album;
  44.         this.name = name;
  45.         this.duration = duration;
  46.     }
  47.  
  48.     public String getArtist() {
  49.         return artist;
  50.     }
  51.  
  52.     public String getGenre() {
  53.         return genre;
  54.     }
  55.  
  56.     public String getAlbum_title() {
  57.         return album;
  58.     }
  59.  
  60.     public String getName() {
  61.         return name;
  62.     }
  63.  
  64.     public int getDuration() {
  65.         return duration;
  66.     }
  67. }
  68.  
  69. class Album implements Serializable {
  70.     private String album_name, description;
  71.     private int rating; //rating médio
  72.     ArrayList <Music> music_list = new ArrayList<>(); //TALVEZ PÔR PRIVATE
  73.     ArrayList <Review> review_list = new ArrayList<>(); //TALVEZ PÔR PRIVATE
  74.  
  75.     public Album(String album_name, String description, int rating, ArrayList<Music> music_list, ArrayList<Review> review_list) {
  76.         this.album_name = album_name;
  77.         this.description = description;
  78.         this.rating = rating;
  79.         this.music_list = music_list;
  80.         this.review_list = review_list;
  81.     }
  82.  
  83.     public String getAlbum_name() {
  84.         return album_name;
  85.     }
  86.  
  87.     public String getDescription() {
  88.         return description;
  89.     }
  90.  
  91.     public int getRating() {
  92.         return rating;
  93.     }
  94.  
  95.     public ArrayList<Music> getMusic_list() {
  96.         return music_list;
  97.     }
  98.  
  99.     public ArrayList<Review> getReview_list() {
  100.         return review_list;
  101.     }
  102.  
  103.     public void setDescription(String description) {
  104.         this.description = description;
  105.     }
  106.  
  107.     public void setRating(int rating) {
  108.         this.rating = rating;
  109.     }
  110. }
  111.  
  112. class Review implements Serializable { //AINDA TENHO QUE VER PRECISA DE SERIALIZABLE OU NÃO
  113.     private String text;
  114.     private int rating;
  115.  
  116.     public Review(String text, int rating) {
  117.         this.text = text;
  118.         this.rating = rating;
  119.     }
  120.  
  121.     public String getText() {
  122.         return text;
  123.     }
  124.  
  125.     public int getRating() {
  126.         return rating;
  127.     }
  128. }
  129.  
  130.  
  131. class DatabaseConnection {
  132.     //Estudar ficheiros de texto e de objetos -> DONE
  133.     //Rever projeto de POO -> DONE
  134.     //Ver como ir buscar a música a uma diretoria e colocar música nessa diretoria
  135.  
  136.     public DatabaseConnection() {
  137.     }
  138.  
  139.     boolean username_match (String username){
  140.  
  141.         ArrayList <User> users = new ArrayList<>();
  142.  
  143.         //Abrir para a leitura do ficheiro de objetos
  144.         try (ObjectInputStream oin = new ObjectInputStream (new FileInputStream("Users_obj.txt"))) {
  145.             users = (ArrayList) oin.readObject();
  146.         } catch (IOException e){
  147.             System.out.println(e.getMessage());
  148.         } catch (ClassNotFoundException e) {
  149.             e.printStackTrace();
  150.         }
  151.  
  152.         for (User u: users){
  153.             if (u.getUsername().equals(username)) {
  154.                 return true;
  155.             }
  156.         }
  157.  
  158.         return false;
  159.     }
  160.  
  161.     boolean password_match (String username, String password){
  162.         //Tenho que procurar por username e depois por password
  163.         //Porque se procuro apenas pela password, pode encontrar a password certa, mas ser de outro utilizador
  164.  
  165.         ArrayList <User> users = new ArrayList<>();
  166.  
  167.         try (ObjectInputStream oin = new ObjectInputStream (new FileInputStream("Users_obj.txt"))) {
  168.             users = (ArrayList) oin.readObject();
  169.         } catch (IOException e){
  170.             System.out.println(e.getMessage());
  171.         } catch (ClassNotFoundException e) {
  172.             e.printStackTrace();
  173.         }
  174.  
  175.         for (User u: users) {
  176.             if (u.getUsername().equals(username)) {
  177.                 if (u.getPassword().equals(password)) {
  178.                     return true;
  179.                 }
  180.             }
  181.  
  182.         }
  183.         return false;
  184.     }
  185.  
  186. }
  187.  
  188.  
  189. class MessageParsing {
  190.  
  191.     public String [] MessageParsing (String message){
  192.  
  193.         //Separar por ";" e saber o número de pares
  194.         String [] pares  = message.split(";");
  195.         String  [] campos = new String[pares.length] ;
  196.  
  197.         if (pares.length >= 3){ //NAO SEI SE PRECISO DESTA CONDICAO OU NAO, TENHO QUE TER ATENCAO POR CAUSA DA EXCEPTION
  198.             for (int i = 0; i < pares.length; i++){
  199.                 String [] aux = pares[i].split("\\|");
  200.                 campos[i] = aux[1];
  201.             }
  202.         }
  203.  
  204.         //É melhor imprimir num ciclo que vai ate ao total de elementos do array, caso contrario opde criar exception
  205.         //System.out.println ("Tipo da mensagem: " + campos[0] + " campo2: " + campos[1] + " campo3: " + campos[2]);
  206.  
  207.         return campos;
  208.     }
  209.  
  210. }
  211.  
  212.  
  213. class UDPMulticastProtocol implements Serializable {
  214.  
  215.     private String MULTICAST_ADDRESS = "224.3.2.1";
  216.     private int PORT = 4444; //Porto de envio
  217.     DatabaseConnection data = new DatabaseConnection();
  218.  
  219.     public UDPMulticastProtocol() {
  220.  
  221.     }
  222.  
  223.     void login (String username, String password, MulticastSocket socket, int server_id){
  224.         System.out.println("O cliente deseja fazer login");
  225.         System.out.println("Username inserido: " + username);
  226.         System.out.println("Password inserida: " + password);
  227.         //Temos que ir à base de dados checkar se o username existe e qual a password associada e se é igual à inserida ou não
  228.  
  229.  
  230.         if (data.username_match(username)){
  231.             if (data.password_match(username, password)){ //SUCESSO
  232.                 //System.out.println("GREAT SUCCESS");
  233.                 String rsp = "server_id|" + server_id + "; type|status;" + "; logged|on; " + "msg|Welcome to DropMusic";
  234.  
  235.                 try{
  236.                     byte[] buffer = rsp.getBytes();
  237.                     InetAddress group = InetAddress.getByName(MULTICAST_ADDRESS);
  238.                     DatagramPacket packet = new DatagramPacket(buffer, buffer.length, InetAddress.getByName(MULTICAST_ADDRESS), PORT); //mudei aqui
  239.                     socket.send(packet);
  240.  
  241.                 } catch (IOException e) {
  242.                     e.printStackTrace();
  243.                 }
  244.  
  245.             }
  246.             else { //PASSWORD ERRADA
  247.                 //System.out.println("PASSWORD ERRADA");
  248.                 String rsp = "server_id|" + server_id + "; type|status;" + "; logged|failed; " + "msg|Password incorreta";
  249.  
  250.                 try{
  251.                     byte[] buffer = rsp.getBytes();
  252.                     InetAddress group = InetAddress.getByName(MULTICAST_ADDRESS);
  253.                     DatagramPacket packet = new DatagramPacket(buffer, buffer.length, InetAddress.getByName(MULTICAST_ADDRESS), PORT); //mudei aqui
  254.                     socket.send(packet);
  255.  
  256.                 } catch (IOException e) {
  257.                     e.printStackTrace();
  258.                 }
  259.             }
  260.         }
  261.  
  262.         else{ //UTILIZADOR NAO EXISTE
  263.             //System.out.println("Utilizador nao existe");
  264.             String rsp = "server_id|" + server_id + "; type|status;" + "; logged|failed; " + "msg|Utilizador nao existe";
  265.  
  266.             try{
  267.                 byte[] buffer = rsp.getBytes();
  268.                 InetAddress group = InetAddress.getByName(MULTICAST_ADDRESS);
  269.                 DatagramPacket packet = new DatagramPacket(buffer, buffer.length, InetAddress.getByName(MULTICAST_ADDRESS), PORT); //mudei aqui
  270.                 socket.send(packet);
  271.  
  272.             } catch (IOException e) {
  273.                 e.printStackTrace();
  274.             }
  275.         }
  276.  
  277.  
  278.     }
  279.  
  280.     void register (String username, String password, MulticastSocket socket, int server_id) throws IOException {
  281.  
  282.         ArrayList <User> users = new ArrayList<>(); //ArrayList que contém todos os utilizadores
  283.         //Abrir para a leitura do ficheiro de objetos
  284.         try (ObjectInputStream oin = new ObjectInputStream (new FileInputStream("Users_obj.txt"))) {
  285.             users = (ArrayList) oin.readObject();
  286.         } catch (IOException e){
  287.             System.out.println(e.getMessage());
  288.         } catch (ClassNotFoundException e) {
  289.             e.printStackTrace();
  290.         }
  291.  
  292.         System.out.println("O cliente deseja registar-se");
  293.         System.out.println("Username inserido: " + username);
  294.         System.out.println("Password inserida: " + password);
  295.  
  296.         //Temos que ver se existe o username ou não
  297.         if (!data.username_match(username)) {
  298.  
  299.             //Abrir para escrita no ficheiro de objetos
  300.             if (users.isEmpty()){ //Se der mal, vou ver se o tamanho e zero
  301.                 User u = new User(username, password, "admin");
  302.                 users.add(u);
  303.             }
  304.             else{
  305.                 User u = new User(username, password, "normal");
  306.                 users.add(u);
  307.             }
  308.  
  309.             try {
  310.                 ObjectOutputStream oS = new ObjectOutputStream(new FileOutputStream("Users_obj.txt"));
  311.                 oS.writeObject(users);
  312.                 oS.close();
  313.  
  314.             } catch (IOException e) {
  315.                 System.out.print("ERRO");
  316.                 System.out.printf("Ocorreu a exceçao %s ao escrever no ficheiro\n", e);
  317.             }
  318.  
  319.             String rsp = "server_id|" + server_id + "; type|status;" + "; register|successful; " + "msg|Welcome to DropMusic";
  320.             try{
  321.  
  322.                 byte[] buffer = rsp.getBytes();
  323.  
  324.                 InetAddress group = InetAddress.getByName(MULTICAST_ADDRESS);
  325.                 DatagramPacket packet = new DatagramPacket(buffer, buffer.length, InetAddress.getByName(MULTICAST_ADDRESS), PORT); //mudei aqui
  326.                 socket.send(packet);
  327.  
  328.             } catch (IOException e) {
  329.                 e.printStackTrace();
  330.             }
  331.         }
  332.  
  333.         else {
  334.             String rsp = "server_id|" + server_id + "; type|status;" + "; register|unsuccessful; " + "msg|Esse username ja existe";
  335.  
  336.             try{
  337.                 byte[] buffer = rsp.getBytes();
  338.  
  339.                 InetAddress group = InetAddress.getByName(MULTICAST_ADDRESS);
  340.                 DatagramPacket packet = new DatagramPacket(buffer, buffer.length, InetAddress.getByName(MULTICAST_ADDRESS), PORT); //mudei aqui
  341.                 socket.send(packet);
  342.  
  343.             } catch (IOException e) {
  344.                 e.printStackTrace();
  345.             }
  346.         }
  347.  
  348.         //SÓ PARA VER QUEM TENHO REGISTADO
  349.         for (User uss: users){
  350.             System.out.println(uss.getUsername() + " " + uss.getPassword() + " -> " + uss.getUser_type());
  351.         }
  352.  
  353.  
  354.     }
  355.  
  356.     void search_music (String choice, String name){
  357.         System.out.println("O cliente deseja procurar musica");
  358.  
  359.         //1. Tenho que ir ver se a choice é all/album/music/artist/genre
  360.  
  361.  
  362.         //2. Consoante a choice, apresentar o pretendido
  363.  
  364.  
  365.     }
  366.  
  367.     void make_editor (String username, String novo_editor, MulticastSocket socket, int server_id){ //TESTAR
  368.         System.out.println("O cliente deseja tornar o utilizador " + novo_editor + " editor");
  369.  
  370.         ArrayList <User> users = new ArrayList<>();
  371.  
  372.         try (ObjectInputStream oin = new ObjectInputStream (new FileInputStream("Users_obj.txt"))) {
  373.             users = (ArrayList) oin.readObject();
  374.         } catch (IOException e){
  375.             System.out.println(e.getMessage());
  376.         } catch (ClassNotFoundException e) {
  377.             e.printStackTrace();
  378.         }
  379.  
  380.         //Verificar se o utilizador que está a querer tornar o outro num editor é também um editor
  381.         if (data.username_match(username)) { //SUCESSO
  382.             for (User u : users) {
  383.                 if (u.getUsername().equals(username)) {
  384.                     if ((u.getUser_type().equals("editor")) || (u.getUser_type().equals("admin"))) {
  385.                         System.out.println("Tem permissao para tornar o utilizador " + novo_editor + " editor");
  386.                         for (User us : users) {
  387.                             if (us.getUsername().equals(novo_editor)) {
  388.                                 us.setUser_type("editor");
  389.                                 //ENVIAR RESPOSTA PARA O RMI SERVER
  390.                                 //String rsp = "server_id|" + server_id + "; type|status;" + "; logged|on; " + "msg|Welcome to DropMusic";
  391.                                 String rsp = "AGORA ÉS EDITOR CARALHO!!!!!!!!!!";
  392.                                 try{
  393.                                     byte[] buffer = rsp.getBytes();
  394.                                     InetAddress group = InetAddress.getByName(MULTICAST_ADDRESS);
  395.                                     DatagramPacket packet = new DatagramPacket(buffer, buffer.length, InetAddress.getByName(MULTICAST_ADDRESS), PORT); //mudei aqui
  396.                                     socket.send(packet);
  397.  
  398.                                 } catch (IOException e) {
  399.                                     e.printStackTrace();
  400.                                 }
  401.  
  402.                             } else {
  403.                                 System.out.println("Utilizador nao existe");
  404.                                 //ENVIAR RESPOSTA PARA O RMI SERVER
  405.                             }
  406.                         }
  407.                     }
  408.                 }
  409.             }
  410.         }
  411.         else {
  412.             System.out.println("ESSE MANO NAO CONSTA DA BASE DE DADOS");
  413.         }
  414.  
  415.  
  416.     }
  417.  
  418.     void manage_data (String username, String choice, String name) { //TESTAR
  419.         System.out.println("O cliente pretende gerir artistas, álbuns e músicas");
  420.  
  421.         //1. Primeiro tenho que ver se o utilizador que quer editar a info é editor
  422.         ArrayList<User> users = new ArrayList<>();
  423.  
  424.         try (ObjectInputStream oin = new ObjectInputStream(new FileInputStream("Users_obj.txt"))) {
  425.             users = (ArrayList) oin.readObject();
  426.         } catch (IOException e) {
  427.             System.out.println(e.getMessage());
  428.         } catch (ClassNotFoundException e) {
  429.             e.printStackTrace();
  430.         }
  431.  
  432.         if (data.username_match(username)) { //SUCESSO
  433.             for (User u : users) {
  434.                 if (u.getUsername().equals(username)) {
  435.                     if (u.getUser_type().equals("editor")) {
  436.                         System.out.println("Tem permissao para editar");
  437.  
  438.                         //2. Tenho que ir ver no campo da mensagem, se é all, music, album ou review
  439.                         switch (choice) {
  440.                             case "artist":
  441.                                 String artist_name = name;
  442.  
  443.  
  444.                                 break;
  445.  
  446.                             case "album":
  447.                                 String album_title = name;
  448.  
  449.                                 break;
  450.  
  451.                             case "music":
  452.                                 String music_name = name;
  453.  
  454.                                 break;
  455.  
  456.                         }
  457.                         //3. De seguida, abro esse álbum para escrita e vou editar a info que lá está
  458.  
  459.  
  460.                         //4. Por fim envio a resposta ao utilizador
  461.  
  462.                     }
  463.                 }
  464.             }
  465.         }
  466.     }
  467.  
  468.     void search_info (){
  469.         System.out.println("O cliente pretende consultar detalhes sobre álbum e sobre artista");
  470.  
  471.         //1. Ver se a choice é album ou artista
  472.  
  473.  
  474.         //2.
  475.  
  476.  
  477.  
  478.     }
  479.  
  480.     void album_review (String album_title, String text, String rating){
  481.         System.out.println("O cliente pretende escrever uma crítica a um álbum");
  482.  
  483.         //PRIMEIRO AINDA VOU TER QUE VERIFICAR SE O CLIENTE É DO TIPO EDITOR OU NÃO
  484.  
  485.  
  486.         ArrayList <Album> album_list = new ArrayList<>();
  487.  
  488.         for (Album a: album_list){
  489.             if (a.getAlbum_name().equals(album_title)){
  490.                 a.setDescription(text);
  491.                 a.setRating(Integer.parseInt(rating));
  492.             }
  493.             else{ //ÁLBUM NÃO CONSTA DA BASE DE DADOS
  494.  
  495.             }
  496.         }
  497.  
  498.         //DEPOIS VOU TER QUE ENVIAR A RESPOSTA A DIZER QUE A REVIEW FOI ESCRITA
  499.  
  500.  
  501.     }
  502.  
  503.     void download (){
  504.         System.out.println("O cliente quer fazer download de uma música");
  505.     }
  506.  
  507.     void upload (){
  508.         System.out.println("O cliente quer fazer upload de uma música");
  509.     }
  510.  
  511.     void share_music (){
  512.         System.out.println("O cliente pretende partilhar música com outros utilizadores");
  513.     }
  514.  
  515. }
  516.  
  517.  
  518. class AnswerRequests extends Thread {
  519.  
  520.     //private String MULTICAST_ADDRESS = "224.3.2.1";
  521.     //private int PORT = 4444; //Porto de envio
  522.     private String message;
  523.     private String ip;
  524.     private int porto;
  525.     private MulticastSocket socket;
  526.     private int server_id;
  527.  
  528.     MessageParsing parsing = new MessageParsing();
  529.  
  530.     public AnswerRequests(String message, String ip, int porto, MulticastSocket socket, int server_id) {
  531.         this.message = message;
  532.         this.ip = ip;
  533.         this.porto = porto;
  534.         this.socket = socket;
  535.         this.server_id = server_id;
  536.     }
  537.  
  538.     public void run(){
  539.  
  540.         UDPMulticastProtocol prot = new UDPMulticastProtocol(); //Ver se é aqui que devo chamar o construtor ou não
  541.         System.out.println("Mensagem do cliente (IP: " + ip + ";Porto: " + porto + ")" + ": " + message);
  542.  
  543.         //Enviar resposta para o cliente
  544.         //MulticastSocket socket = null;
  545.  
  546.         //Parsing da mensagem
  547.         String [] pares = parsing.MessageParsing(message);
  548.         String type = pares[1];
  549.  
  550.         // De acordo com o tipo de argumento no campo "type" vamos definir a operacao pretendida e vai ser invocado o respetivo método
  551.         //Trata do pedido para depois enviar a resposta para o cliente
  552.         switch (type) {
  553.             case "login":
  554.                 prot.login(pares[2], pares[3], socket, server_id);
  555.                 break;
  556.             case "search music":
  557.                 prot.search_music(pares[2], pares[3]);
  558.                 break;
  559.             case "make editor": //RESOLVER O PROBLEMA: COMO É QUE HEI DE SABER QUEM É QUE ESTÁ A QUERER TORNAR ALGUÉM EDITOR, PARA SABER SE TAMBÉM É EDITOR
  560.                 String username = pares[2];
  561.                 String new_editor = pares[3];
  562.                 prot.make_editor(username, new_editor, socket, server_id); //EDITOR
  563.                 break;
  564.             case "register":
  565.                 try {
  566.                     prot.register(pares[2], pares[3], socket, server_id);
  567.                 } catch (IOException e) {
  568.                     e.printStackTrace();
  569.                 }
  570.                 break;
  571.             case "edit info":
  572.                 String user = pares[2];
  573.                 String search = pares[3];
  574.                 String msg = pares[4];
  575.                 prot.manage_data(user, search, msg); //EDITOR
  576.                 break;
  577.             case "search info":
  578.                 prot.search_info();
  579.                 break;
  580.             case "review":
  581.                 prot.album_review(pares[2], pares[3], pares[4]); //ANY USER
  582.                 break;
  583.             case "share music": //DEPOIS
  584.                 prot.share_music();
  585.                 break;
  586.             case "download": //DEPOIS
  587.                 prot.download();
  588.                 break;
  589.             case "upload":  //DEPOIS
  590.                 prot.upload();
  591.                 break;
  592.         }
  593.  
  594.     }
  595.  
  596. }
  597.  
  598. public class MulticastServer extends Thread {
  599.  
  600.     private String MULTICAST_ADDRESS = "224.3.2.1";
  601.     private int PORT = 4321; //Porto de recepção
  602.     private int BUFFER_SIZE = 4096;
  603.     private static int SERVER_ID;
  604.  
  605.     MessageParsing parsemsg = new MessageParsing();
  606.  
  607.     public static void main(String[] args) {
  608.         SERVER_ID = Integer.parseInt(args[0]); //ID DO SERVIDOR
  609.         MulticastServer server = new MulticastServer();
  610.         server.start(); //Ao invocar o start da thread, estamos a chamar o metodo run()
  611.     }
  612.  
  613.     public MulticastServer() {
  614.         //super ("Server Multicast #" + (long) (Math.random() * 100));
  615.         super ("Server Multicast #" + SERVER_ID);
  616.     }
  617.  
  618.     public void run(){
  619.         MulticastSocket socket = null;
  620.  
  621.         System.out.println(this.getName() + " running..."); //Vai buscar o que está dentro do método do construtor
  622.  
  623.         try {
  624.             socket = new MulticastSocket(PORT); //cria socket e dá bind
  625.             InetAddress group = InetAddress.getByName(MULTICAST_ADDRESS);
  626.             socket.joinGroup(group); //dá join ao grupo multicast
  627.  
  628.  
  629.             while (true) {
  630.                 //Recepcao
  631.                 byte[] inBuffer = new byte[BUFFER_SIZE];
  632.                 DatagramPacket msgIn = new DatagramPacket(inBuffer, inBuffer.length);
  633.                 socket.receive(msgIn); //Recebe o datagrama UDP
  634.  
  635.                 String clientIP = msgIn.getAddress().getHostAddress(); //Endereço IP do cliente que enviou a mensagem
  636.                 int clientport = msgIn.getPort(); //Porto do cliente
  637.  
  638.                 String message = new String(msgIn.getData(), 0, msgIn.getLength());
  639.                 String [] fields = parsemsg.MessageParsing(message);
  640.  
  641.                 if (Integer.parseInt(fields[0]) == SERVER_ID){
  642.                     System.out.println("SO VOU RESPONDER EU -> SERVER " + SERVER_ID);
  643.  
  644.                     //Vai buscar a informação da mensagem e lança a thread para tratar do pedido
  645.                     AnswerRequests work = new AnswerRequests(message, clientIP , clientport, socket, SERVER_ID); //Também vou passar a socket por parâmetro
  646.                     work.start();
  647.                 }
  648.                 else{
  649.                     //Se for um registo, mudança de informação de álbuns ou cenas que têm que ser replicadas
  650.                     //Ou seja, tem que ir para as 3 bases de dados e vai ser este "else" que vai tratar disso
  651.                     System.out.println("VOU ESTAR QUIETO -> SERVER " + SERVER_ID);
  652.  
  653.                 }
  654.  
  655.             }
  656.  
  657.         } catch (IOException e) {
  658.             e.printStackTrace();
  659.         } finally {
  660.             socket.close(); //Fechar a socket
  661.         }
  662.     }
  663.  
  664. }
  665.  
  666. /*
  667. try{
  668.             socket = new MulticastSocket(); //Não é necessário dar bind porque está apenas a enviar
  669.             socket.setTimeToLive(1);
  670.  
  671.             Scanner keyboardScaner = new Scanner(System.in);
  672.             while (true){
  673.                 String keyboard = keyboardScaner.nextLine();
  674.                 byte[] buffer = keyboard.getBytes();
  675.  
  676.                 InetAddress group = InetAddress.getByName(MULTICAST_ADDRESS);
  677.                 DatagramPacket packet = new DatagramPacket(buffer, buffer.length, InetAddress.getByName(MULTICAST_ADDRESS), PORT); //mudei aqui
  678.                 socket.send(packet);
  679.             }
  680.         } catch (IOException e) {
  681.             e.printStackTrace();
  682.         } finally {
  683.             socket.close();
  684.         }
  685.  */
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement