Problema com entrega e recebimento de mensagens em um chat multicast

0 respostas
M

Galera, estou tentando implementar um chat multicast, mas nao consegui receber nem enviar mensagens! Conecto os computadores pela rede, passo os IP's, mas a mensagem não chega/envia. Alguem pode me ajudar nessa? Nao sei o que está acontecendo, já testei um chat simples e funcionou. Seguem os códigos:

Método run que lê mensagem e chama o método para o envio:

public void run() {

        Scanner sc = new Scanner(System.in);
        String msg;

        do {
            try {

                System.out.print("<Mensagem> ");
                msg = sc.nextLine();

                if (msg.length() > 512) {
                    System.out.println("Mensagem muito grande! Escreva novamente.");
                } else {

                    String sendData = "MCDREQPDU" + " " + dataTransfer.pduNumber + " " + msg.length() + " " + msg;
                    dataTransfer.MCDataReq(id, sendData);

                }
            } catch (NullPointerException npe) {

                System.out.println(npe);
            }

        } while (true);

    }

Método run para o recebimento e o método MCDataReq()

public void run() {

        do {

            try {

                receiveSocket = new DatagramSocket(hostPort);
                byte buf[] = new byte[512];
                receivedPacket = new DatagramPacket(buf, buf.length);
                receiveSocket.receive(receivedPacket);
                receivedMessage = new String(receivedPacket.getData()).trim();
                System.out.println("Mensagem: " + receivedMessage);

            } catch (SocketException ex) {
                System.out.println("Nao foi possivel abrir socket: " + ex);
                System.exit(0);
            } catch (IOException ex) {
                System.out.println("ERROR: " + ex);
            }

        } while (true);

    }

    @Override
    public boolean MCDataReq(short[] id, String sendData) {

        int sent = 0;
        int sendPort;

        if (sendData.split(" ")[3].equals("exit")) {

            System.out.println("Opcao para sair selecionada! Saindo...");
            System.exit(0);

        }

        for (int i = 0; i < MultiCastApplication.nUsers; i++) {

            try {

                InetAddress sendAddress = InetAddress.getByName(getInformationEntitie(id[i], 1));
                sendPort = Integer.parseInt(getInformationEntitie(id[i], 2));

                sendSocket = new DatagramSocket();
                sendSocket.connect(sendAddress, sendPort);

                byte[] sendDataBytes = new byte[512];
                sendDataBytes = sendData.getBytes();
                packetSend = new DatagramPacket(sendDataBytes, sendDataBytes.length, sendAddress, sendPort);

                sendSocket.send(packetSend);

                sent++;
            } catch (NullPointerException npe) {

                System.out.println(npe);

            } catch (SocketException e) {
                
                System.out.println("Erro ao abrir socket! " + e);
                
            } catch (IOException ex) {
                
                System.out.println("Erro! " + ex);
                
            }
        }

        return sent == id.length;

    }
Criado 29 de novembro de 2014
Respostas 0
Participantes 1