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:
[code]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);
}[/code]
Método run para o recebimento e o método MCDataReq()
[code] 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;
}[/code]