olá pessoal eu e uns amigos criamos um aplicativo em java para fazer musicas usando midi usando o seguinte sistema nos criamos um servidor que recebe as informaçoes do aplet cliente via rede(o aplet utiliza java script) to com uma duvida sobre qual classe ou como eu faria para que o meu programa me mostrasse o ip de quem esta conectado e que gere um log das conexoes feitas pelos clientes.
eu agradeço qualquer ajuda pois eu to preso tentando resolver isso fazem umas duas semanas e nao consegui.
outra coisa que eu preciso implementar é a questao do cliente saber se ele esta conectado ou nao se alguem tiver uma ideia sobre como eu resolvo isso eu agradeço a ajuda.
Porem, dessa forma vc estara a partir do applet (que roda no browser do cliente), obtendo o IP dele, se seu servidor quiser saber esse IP (deve ser isso) você vai ter que mandar essa informação para lá.
E ai vem a duvida, que servidor é esse? como é a comunicação? se a comunicação é via http e for um servidor rodando servlet’s em java, então você pode usar os métodos que o avsouza falou sem precisar obter via applet, se for algo próprio de vocês, mande essa informação junto com as outras que você já deve estar mandando.
Valeu pela dica iubs mas esse metodo que você me passou é pra pegar o ip no applet o que eu preciso é que o servidor me mostre o ip do cliente que esta acessando.
vai o codigo do servidor
package rede;
public static void main(String[] args) {
//Declaro o ServerSocket
ServerSocket serv=null;
//Declaro o Socket de comunicação
Socket s= null;
//Declaro o leitor para a entrada de dados
BufferedReader entrada=null;
try{
//Cria o ServerSocket na porta 7000 se estiver disponÃvel
serv = new ServerSocket(7000);
System.out.println ("Servidor iniciado. Aguardando o Cliente iniciar.");
//Aguarda uma conexão na porta especificada e cria retorna o socket que irá comunicar com o cliente
s = serv.accept();
System.out.println ("O cliente se conectou!");
InputStreamReader isr = new InputStreamReader (s.getInputStream());
//Cria um BufferedReader para o canal da stream de entrada de dados do socket s
entrada = new BufferedReader(isr);
if (entrada != null){
System.out.println("entrou qualquer coisa");
//System.out.println(entrada.readLine()); //teste.
ShortMessage msg = null;
//System.out.println(entrada.read());
//byte[] Byte = entrada.readLine().getBytes();
//System.out.println(Byte);
//int tamanho = Byte.length;
//System.out.println(tamanho);
//for (int i = 0; i <= tamanho - 1; i++){
//msg.getMessage()[i] = Byte[i];
// System.out.print(Byte[i] +" ");
//}
System.out.println("Lendo Dados.");
System.out.println(entrada.readLine());
System.out.println(entrada.readLine());
System.out.println(entrada.readLine());
System.out.println(entrada.readLine());
//System.out.println(tamanho);
}
//Aguarda por algum dado e imprime a linha recebida quando recebe
//System.out.println(entrada.readLine());
//System.out.println(entrada.readLine());
//trata possÃveis excessões de input/output. Note que as excessões são as mesmas utilizadas para as classes de java.io
}catch(IOException e){
//Imprime uma notificação na saÃda padrão caso haja algo errado.
System.out.println("Algum problema ocorreu para criar ou receber o socket.");
}finally{
try{
//Encerro o socket de comunicação
s.close();
//Encerro o ServerSocket
serv.close();
}catch(IOException e){
}
}
}
[quote=kyubinarutosan]Valeu pela dica iubs mas esse metodo que você me passou é pra pegar o ip no applet o que eu preciso é que o servidor me mostre o ip do cliente que esta acessando.
vai o codigo do servidor
package rede;
import com.sun.media.sound.SoftShortMessage;
import com.sun.media.sound.SoftSynthesizer;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.ServerSocket;
import java.net.Socket;
import javax.sound.midi.MidiDevice;
import javax.sound.midi.MidiMessage;
import javax.sound.midi.MidiSystem;
import javax.sound.midi.ShortMessage;
public class Servidor {
public static void main(String[] args) {
//Declaro o ServerSocket
ServerSocket serv=null;
//Declaro o Socket de comunicação
Socket s= null;
//Declaro o leitor para a entrada de dados
BufferedReader entrada=null;
try{
//Cria o ServerSocket na porta 7000 se estiver disponÃvel
serv = new ServerSocket(7000);
System.out.println ("Servidor iniciado. Aguardando o Cliente iniciar.");
//Aguarda uma conexão na porta especificada e cria retorna o socket que irá comunicar com o cliente
s = serv.accept();
System.out.println ("O cliente se conectou!");
InputStreamReader isr = new InputStreamReader (s.getInputStream());
//Cria um BufferedReader para o canal da stream de entrada de dados do socket s
entrada = new BufferedReader(isr);
if (entrada != null){
System.out.println("entrou qualquer coisa");
//System.out.println(entrada.readLine()); //teste.
ShortMessage msg = null;
//System.out.println(entrada.read());
//byte[] Byte = entrada.readLine().getBytes();
//System.out.println(Byte);
//int tamanho = Byte.length;
//System.out.println(tamanho);
//for (int i = 0; i <= tamanho - 1; i++){
//msg.getMessage()[i] = Byte[i];
// System.out.print(Byte[i] +" ");
//}
System.out.println("Lendo Dados.");
System.out.println(entrada.readLine());
System.out.println(entrada.readLine());
System.out.println(entrada.readLine());
System.out.println(entrada.readLine());
//System.out.println(tamanho);
}
//Aguarda por algum dado e imprime a linha recebida quando recebe
//System.out.println(entrada.readLine());
//System.out.println(entrada.readLine());
//trata possÃveis excessões de input/output. Note que as excessões são as mesmas utilizadas para as classes de java.io
}catch(IOException e){
//Imprime uma notificação na saÃda padrão caso haja algo errado.
System.out.println("Algum problema ocorreu para criar ou receber o socket.");
}finally{
try{
//Encerro o socket de comunicação
s.close();
//Encerro o ServerSocket
serv.close();
}catch(IOException e){
}
}
}
}
gente eu consegui resolver o problema do ip mas me surgiu um outro problema que seria o ip aparecer na interface eu queria saber se eu tenho que criar uma variavel para aparecer na tela se alguem puder me dar uma ideia eu agradeço