Bom, ai vão 2 trechos de códigos que podem explicar mais o que estou fazendo…
Um pedaço do Cliente:
int porta = 5000;
String enderecoBroadcast = "255.255.255.255";
InetAddress address = InetAddress.getByName(enderecoBroadcast);
DatagramSocket socketUDP = new DatagramSocket(porta, address);
String mensagemAYA = "AYA?";
byte mensagem[] = mensagemAYA.getBytes();
DatagramPacket pacoteAYA = new DatagramPacket(mensagem, mensagem.length, address, porta);
socketUDP.send(pacoteAYA);
//Recebimento de resposta
DatagramPacket pacoteRAYA = new DatagramPacket(mensagem, mensagem.length);
socketUDP.receive(pacoteRAYA);
InetAddress servidorAddr = pacoteRAYA.getAddress();
areaResp.append("The Server Addr is : '" + servidorAddr.getHostAddress());
socketUDP.close();
Aqui eu estou começando um socket do tipo Datagram (UDP) e tentando mandar a conexao por broadcast (255.255.255.255) pela porta 5000.
A mensagem enviada é AYA e depois espero a resposta, quando a resposta chegar, eu vejo o IP real do servidor alcançado.
Já no Servidor:
byte[] buffer = new byte[1024];
int port = 5000;
String message;
socket = new DatagramSocket(port);
while(true){
try{
area.append("Server is started\n");
//Receive request from client
DatagramPacket packet = new DatagramPacket(buffer, buffer.length);
socket.receive(packet);
InetAddress client = packet.getAddress();
int client_port = packet.getPort();
area.append(" Received "+new String(buffer)+" from "+client);
// send information to the client
message = "Yes, i'm alive";
buffer = message.getBytes();
packet = new DatagramPacket(buffer, buffer.length,client,client_port);
socket.send(packet);
Eu espero um datagrama de qualquer lugar, ao chegar, pego os dados do cliente (necessários para resposta), monto uma mensagem de retorno, e retorno direto ao cliente.
Ao executar o Servidor, Ok.
Ja quando o Cliente tenta conectar…
Isso eu sei, significa que ele não conseguiu associar o endereço ao Socket, porem, se eu nao posso tentar associar o broadcast ao socket, como farei isso ?
Espero ter esclarecido mais minha duvida.