I need my UDP server to send a package to all clients.
Server code:
while (true) {
byte[] buf = new byte[256];
DatagramPacket packet = new DatagramPacket(buf, buf.length);
try {
socket.receive(packet);
} catch (Exception e) {
System.err.println(e.getMessage());
}
System.out.print("O servidor recebeu um pacote do endereco " + packet.getAddress() + "\n");
// Reenviar pro cliente
InetAddress ed = packet.getAddress();
int portad = packet.getPort();
//manda de volta para o cliente.
packet = new DatagramPacket(buf, buf.length, ed, portad);
try {
socket.send(packet);
} catch (Exception e) {
System.err.println(e.getMessage());
}
}
Client Send:
private void startStreaming() {
Log.i(TAG, "Starting the background thread to stream the audio data");
Thread streamThread = new Thread(new Runnable() {
@Override
public void run() {
try {
while (falando == true) {
record.startRecording();
byte lin[] = new byte[BUFFER_SIZE];
am.setMode(AudioManager.MODE_IN_COMMUNICATION);
// read the data into the buffer
record.read(lin, 0, BUFFER_SIZE);
InetAddress group = InetAddress.getByName(groupIp); //Keep this as the same multicast ip as in your client
DatagramPacket packet = new DatagramPacket(lin, lin.length, group, port);
//Envia o audio
try {
socket.send(packet);
Log.d(TAG, "Enviando audio");
} catch (Exception e) {
System.err.println(e.getMessage());
}
}
} catch (Exception e) {
Log.e(TAG, "Exception: " + e);
}
}
});
// start the thread
streamThread.start();
}
client listen
private void comecarEscutar() {
Thread listenThread = new Thread(new Runnable() {
@Override
public void run() {
try {
byte lin[] = new byte[BUFFER_SIZE+=4096];
while (true) {
// read the data into the buffer
record.read(lin, 0, BUFFER_SIZE);
InetAddress group = InetAddress.getByName(groupIp);
DatagramPacket packet = new DatagramPacket(lin, lin.length, group, port);
//Recebe o Audio
try {
socket.receive(packet);
track.write(packet.getData(), 0, BUFFER_SIZE);
Log.d(TAG, "Reproduzindo Audio");
track.play();
} catch (Exception e) {
System.err.println(e.getMessage());
}
}
} catch (Exception e) {
Log.e(TAG, "Exception: " + e);
}
}
});
// start the thread
listenThread.start();
}
In addition I would also like tips for optimizing the audio, which runs in real time