Olá, estou desenvolvendo um programa de comunicação com sockets UDP em java,
oque eu consegui fazer até o momento é:
o servidor fica online, esperando alguma mensagem.
e um cliente envia uma mensagem(função) para o servidor processar.
eu gostaria de desenvolver algo em que tipo, o servidor processe a mensagem, e devolva um resultado ou alguma mensagem para um dos clientes… alguém sabe como?
Qual destes não conseguiu implementar?
criei tudo certo, está tudo certo, oque falta é quando o servidor recebe a mensagem, gostaria de retornar a mensagem para todos os clientes e/ou certo cliente…
Posta o código.
P.S: Se você der uma pequena pesquisada no google. acha milhares de exemplos…
Servidor:
private static DatagramSocket socket;
private static final byte[] buf = new byte[20];
public static void main(String[] args) {
try {
socket = new DatagramSocket(20000);
} catch (SocketException ex) {
console("Ocorreu um erro ao tentar abrir na porta 20k");
return;
}
new Thread(() -> {
while (true) {
try {
DatagramPacket pack = new DatagramPacket(buf, buf.length);
socket.receive(pack);
byte[] received_data = pack.getData();
String received_msg = new String(received_data);
InetAddress origin_address = pack.getAddress();
int origin_port = pack.getPort();
console(" Mensagem: "+received_msg);
console(" Endereço de origem: "+origin_address.getHostAddress());
console(" Porta de origem: "+origin_port);
} catch (IOException e) {
e.printStackTrace();
}
}
}).start();
}
public static void console(String mensagem) {
System.out.println(mensagem);
}
Cliente:
try {
DatagramSocket socket = new DatagramSocket(10000);
String msg = "teste";
byte[] msg_buf = msg.getBytes();
int msg_size = msg_buf.length;
InetAddress destination_address = InetAddress.getLocalHost();
int destination_port = 20000;
DatagramPacket pack = new DatagramPacket(msg_buf, msg_size, destination_address, destination_port);
socket.send(pack);
} catch (Exception e){
System.out.println(e.getMessage());
}
não ajudou… o servidor não devolve a mensagem/resultado para o cliente.