Ola, sou nova na area de programacao, gostaria de uma ajuda neste exercicio, please
A classe RedesController.java deve ter 2 métodos.
O primeiro, chamado ip, que recebe o nome do Sistema Operacional como parâmetro e, de acordo com o S.O., faz a chamada de configuração de IP e filtra a saída do processo, retornando um String com o nome do Adaptador Ethernet e o IPv4 apenas (Não importa o número de adaptadores ethernet, devem aparecer todos). Os adaptadores que não tiverem IPv4 não devem ser mostrados.
O segundo, chamado ping, que recebe o nome do Sistema Operacional como parâmetro e, de acordo com o S.O., faz a chamada de ping com 10 iterações, filtra a saída, pegando apenas o tempo e dá a saída, em ms, do tempo médio do ping.
Como posso pegar o IP da maquina usando o sistema operacional como paramentro e a partir disso mostrar os adaptadores Ethernet e Ipv4, usando contains ou split ou trim do java. Nao sei como estruturar a logica
Enumeration nis = null;
try {
nis = NetworkInterface.getNetworkInterfaces();
} catch (SocketException e) {
e.printStackTrace();
}
while (nis.hasMoreElements()) {
NetworkInterface ni = (NetworkInterface) nis.nextElement();
Enumeration ias = ni.getInetAddresses();
while (ias.hasMoreElements()) {
InetAddress ia = (InetAddress) ias.nextElement();
if (!ni.getName().equals("lo"))
System.out.println(ia.getHostAddress());
}
}
Começa por isso ai… Tenta entender o que foi executado, e depois traga perguntas mais específicas porque realmente está meio difícil desembolar sua necessidade, fora que chegar aqui no GUJ e dizer: “Quero um programa que replique a inteligencia humana” é um trabalho completo e não uma dúvida.
O trabalho pede que você execute processos do próprio sistema operacional para obter as informações?
É por isso que precisa do nome do sistema operacional como parâmetro?
O primeiro, chamado ip, que recebe o nome do Sistema Operacional como parâmetro e, de acordo com o S.O., faz a chamada de configuração de IP e filtra a saída do processo, retornando um String com o nome do Adaptador Ethernet e o IPv4 apenas (Não importa o número de adaptadores ethernet, devem aparecer todos). Os adaptadores que não tiverem IPv4 não devem ser mostrados.
O segundo, chamado ping, que recebe o nome do Sistema Operacional como parâmetro e, de acordo com o S.O., faz a chamada de ping com 10 iterações, filtra a saída, pegando apenas o tempo e dá a saída, em ms, do tempo médio do ping.
/**
* A classe RedesController.java deve ter 2 métodos.
*
* O primeiro, chamado ip, que recebe o nome do Sistema Operacional como parâmetro e, de acordo com o S.O., faz a chamada de configuração de IP e filtra a saída do processo, retornando um String com o
* nome do Adaptador Ethernet e o IPv4 apenas (Não importa o número de adaptadores ethernet, devem aparecer todos). Os adaptadores que não tiverem IPv4 não devem ser mostrados.
*
* O segundo, chamado ping, que recebe o nome do Sistema Operacional como parâmetro e, de acordo com o S.O., faz a chamada de ping com 10 iterações, filtra a saída, pegando apenas o tempo e dá a
* saída, em ms, do tempo médio do ping
*/
public final class RedesController {
/**
* Recebe o nome do Sistema Operacional como parâmetro e, de acordo com o S.O., faz a chamada de configuração de IP e filtra a saída do processo, retornando um String com o nome do Adaptador
* Ethernet e o IPv4 apenas (Não importa o número de adaptadores ethernet, devem aparecer todos). Os adaptadores que não tiverem IPv4 não devem ser mostrados.
*
* @param sistema
* o nome do sistema operacional
*
*/
public void ip(String sistema) {
// aqui obtém o ip de acordo com os sistema operacional informado
}
/**
* Recebe o nome do Sistema Operacional como parâmetro e, de acordo com o S.O., faz a chamada de ping com 10 iterações, filtra a saída, pegando apenas o tempo e dá a saída, em ms, do tempo médio
* do ping
*
* @param sistema
* o nome do sistema operacional
*/
public void ping(String sistema) {
// aqui faz o ping de acordo com os sistema operacional informado
}
}
Pelo que meu professor passou: a aplicacao teria primeiro q identificar o sistema operacional
public RedesController(){
super ();
}
public String osName(){
String so = System.getProperty ("os.name");
return so;
e partir disso criar um metodo com o SO como parametro para obter o IP da maquina e depois mostrar os adaptadores Ethernet e Ipv4. Minha dificuldade e estruturar o codigo a partir desse ponto. O esqueleto me ajudara a visualizar melhor agora. Obrigada Staroski =)
Acho que a dúvida dela é como ela vai estruturar o código @Suzanaoni?, que seria como usar o sistema operacional como parâmetro para o mostrar o ip da maquina(como ela realmente consegue fazer isso e depois os adaptadores,como fazer isto no código mesmo,chamar função,atributos.@staroski@Paulosilv_123 gradeço a ajuda de todos!
Aí criaria implementações distintas como por exemplo:
class WindowsIpCommand implements IpCommand {
// implementação da classe
}
class WindowsPingCommand implements PingCommand {
// implementação da classe
}
e
class LinuxIpCommand implements IpCommand {
// implementação da classe
}
class LinuxPingCommand implements PingCommand {
// implementação da classe
}
Dessa forma, a classe RedesController ficaria bem mais enxuta, veja:
import java.util.HashMap;
import java.util.Map;
public final class RedesController {
private static final Map<String, IpCommand> IP_COMMANDS;
private static final Map<String, PingCommand> PING_COMMANDS;
static {
IP_COMMANDS = new HashMap<>();
PING_COMMANDS = new HashMap<>();
String sistema = "windows";
IP_COMMANDS.put(sistema, new WindowsIpCommand());
PING_COMMANDS.put(sistema, new WindowsPingCommand());
sistema = "linux";
IP_COMMANDS.put(sistema, new LinuxIpCommand());
PING_COMMANDS.put(sistema, new LinuxPingCommand());
}
public void ip(String sistema) {
IpCommand command = IP_COMMANDS.get(sistema);
String ip = command.ip();
System.out.println("IP: " + ip);
}
public void ping(String sistema) {
PingCommand command = PING_COMMANDS.get(sistema);
int ping = command.ping();
System.out.println("PING: " + ping);
}
}