Olá pessoal eu to trabalhando em um programa que usa o sistema cliente/servidor sendo o cliente usa java script e acessa o servidor via rede e o servidor foi feito em java, infelizmente eu iniciei a programaçao em java a pouco tempo e estou com uma duvida de como proceder para que o servidor me mostre o ip e o nome da maquina que está acessando o servidor. se alguém puder me dar umas dicas eu agradeço.
vale lembrar que eu sou iniciante e sei muito pouco ainda sobre as classes e como usa-lás.
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
Pergunta
Kyubi
Olá pessoal eu to trabalhando em um programa que usa o sistema cliente/servidor sendo o cliente usa java script e acessa o servidor via rede e o servidor foi feito em java, infelizmente eu iniciei a programaçao em java a pouco tempo e estou com uma duvida de como proceder para que o servidor me mostre o ip e o nome da maquina que está acessando o servidor. se alguém puder me dar umas dicas eu agradeço.
vale lembrar que eu sou iniciante e sei muito pouco ainda sobre as classes e como usa-lás.
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() = Byte;
// System.out.print(Byte +" ");
//}
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){
}
}
}
}
Cliente
package rede;
import java.io.IOException;
import java.io.OutputStream;
import java.io.PrintStream;
import java.net.Socket;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.sound.midi.InvalidMidiDataException;
import javax.sound.midi.MidiSystem;
import javax.sound.midi.ShortMessage;
public class Cliente {
public static void main(String[] args) {
//Declaro o socket cliente
Socket s = null;
//Declaro a Stream de saida de dados
PrintStream ps = null;
try{
ShortMessage msg = new ShortMessage();
int comando = 144;
msg.setMessage(comando,1,44,127);
//Cria o socket com o recurso desejado na porta especificada
s = new Socket("127.0.0.1",7000);
System.out.println ("Conectando ao servidor.");
OutputStream os = s.getOutputStream();
//Cria a Stream de saida de dados
ps = new PrintStream(s.getOutputStream());
//Imprime uma linha para a stream de saÃda de dados
ps.println(msg.getCommand());
ps.println(msg.getChannel());
ps.println(msg.getData1());
ps.println(msg.getData2());
//ps.println(" ");
os.close();
//Trata possÃveis exceções
} catch (InvalidMidiDataException ex) {
Logger.getLogger(Cliente.class.getName()).log(Level.SEVERE, null, ex);
}catch(IOException e){
System.out.println("Algum problema ocorreu ao criar ou enviar dados pelo socket.");
}finally{
try{
//Encerra o socket cliente
s.close();
}catch(IOException e){}
}
}
}
Link para o comentário
Compartilhar em outros sites
0 respostass a esta questão
Posts Recomendados
Participe da discussão
Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.