1. This site uses cookies. By continuing to use this site, you are agreeing to our use of cookies. Learn More.

Disparar um evento atraves de Threads

Discussion in 'Technology' started by Rodrigo Lima, Oct 8, 2018.

  1. Rodrigo Lima

    Rodrigo Lima Guest

    Estou desenvolvendo um sistema mult cast com sockets, tenho uma classe que envia o sinal de vida na rede de 10 em 10 segundos, e outra classe que escuta o sinal dos nós conectados na rede. Bom o que eu queria fazer é mostrar na interface grafica todos os nós que estao conectados(no caso enviando sinal de vida), pensei em add uma label com as informações do sinal recebido dentro de um jpanel dinamicamente adicionar uma nova a cada sinal que nao seja repetido, mas nao faço ideia de como fazer isso. Tentei varias formas de fazer isso mas pelo que notei a interface grafica é toda carregada uma vez, se for add um elemento tipo label precisa de algo fora do meu conhecimento.

    Classe de escuta

    public class EscutaMultCast implements Runnable {



    @Override
    public void run() {
    System.setProperty("java.net.preferIPv4Stack", "true");

    try {

    InetAddress group = InetAddress.getByName("231.2.3.4");
    s = new MulticastSocket(6789);
    s.joinGroup(group);
    byte[] buffer = new byte[1000];
    int cont = 0;
    while (true) {
    DatagramPacket messageIn = new DatagramPacket(buffer, buffer.length);
    System.out.println("Esperando comunicação");
    s.receive(messageIn);
    String sinal = new String(messageIn.getData()).trim();//essa variavel sinal tem o texto para a label
    System.out.println(sinal);
    }
    } catch (IOException e) {
    e.printStackTrace();
    } finally {
    if (s != null) {
    s.close();
    }
    }

    }


    public static void main(String[] args){
    EscutaMultCast e = new EscutaMultCast();
    Thread t = new Thread(e);
    t.start();
    }


    Classe de envio de sinal de vida

    public class EnvioMultCast implements Runnable {


    MulticastSocket s = null;

    @Override
    public void run() {
    System.setProperty("java.net.preferIPv4Stack", "true");
    int i = 0;
    while (true){
    try {
    InetAddress group = InetAddress.getByName("231.2.3.4");
    s = new MulticastSocket(6789);
    s.joinGroup(group);
    byte[] m = "descoberta&127.000.0.001&6789".getBytes();
    DatagramPacket messageOut = new DatagramPacket(m, m.length, group, 6789);
    Thread.sleep(5000);
    s.send(messageOut);


    }catch (IOException|InterruptedException e){
    e.printStackTrace();
    }
    }


    }
    public static void main(String[] args){
    Thread t = new Thread(new EnvioMultCast());
    t.start();
    }


    }

    Login To add answer/comment
     

Share This Page