Olá, gostaria de ajuda com um servidor e um cliente em java, aonde varios clientes podem mandar e receber mensagens pra um servidor e o servidor pode mandar e receber mensagens destes clientes.
Eu comecei fazendo algo mas to bem perdido com estes sockets, datagramas, etc…
Se alguém puder disponibilizar um exemplo de uma comunicação simples entre cliente e servidor com envio e recepção de mensagens, agradeceria se postasse aqui(não estou pedindo que façam o programa, estou pedindo só um exemplo pra mim ver se consigo entender o funcionamento)
Segue aí o código de cliente e servidor que começei(estão incompletos pois não sei como continuar depois dessa parte):
Cliente:
public class ClienteUDP {
/**
* @param args the command line arguments
*/
public static void main(String[] args) {
{
try
{
MulticastSocket socket = new MulticastSocket(7722); //multicastSocket eh pra receber
DatagramSocket socket2 = new DatagramSocket(); //DatagramSocket eh pra enviar
//Isso axo q faz parte do multicast socket
InetAddress endereco = InetAddress.getByName("225.0.0.1");//325.0.0.1
socket.joinGroup(endereco);
//Isso axo q faz parte do multicast socket
byte []msg = new byte[200];
DatagramPacket datagrama = new DatagramPacket(msg, msg.length);
socket.receive(datagrama);
byte[] texto = datagrama.getData ();
String textoRecebido = new String(texto);
System.out.println (textoRecebido.trim() + " hehehe");
System.out.println("Digita ai mano véio!!!");
Scanner input = new Scanner(System.in);
//agora irei enviar la resposta
String resposta = input.nextLine();
byte[] arrayTexto = resposta.getBytes();
DatagramPacket datagrama2 = new DatagramPacket (arrayTexto, arrayTexto.length, endereco, 7722);
socket2.send(datagrama2);
Servidor:
public class ServidorUDP {
/**
* @param args the command line arguments
*/
public static void main(String[] args) {
{
try
{
for (;;){
DatagramSocket socket = new DatagramSocket();
System.out.println("\nMensagem a ser replicada: ");
System.out.print("Você quer Se conectar? Então digite \"S\", caso contrario digite \"N\"");
//isso aqui seria pra pegar oq o servidor digita e manda pro cliente: String textouser = input.nextLine();
String textouser = "Você quer Se conectar? Então digite \"S\", caso contrario digite \"N\"";
byte[] texto = textouser.getBytes();
InetAddress enderecoMulticast = InetAddress.getByName("225.0.0.1");
DatagramPacket datagrama = new DatagramPacket(texto,texto.length,enderecoMulticast,7722);
socket.send(datagrama);
//Essa aqui vai ser a string q vai conter a resposta do cliente, c ele quer receber ou nao:
byte[] dados = new byte[100];
DatagramPacket datagrama2 = new DatagramPacket (dados, dados.length);
socket.receive(datagrama2);
byte[] recebido = datagrama2.getData();
String resposta1 = new String (recebido);
if(resposta1.equalsIgnoreCase("s")){
break;
}else{
//FODA-SE VAI FICA AQUI PRA SEMPRE BIBA DO CARALHO
}
Thread.sleep(2000);
}//fim do laço q tenta receber resposta do client