publicstaticfinalintPORT=3128;publicstaticvoidmain(String[]args){// BufferedReader Mac = new BufferedReader (new FileReader(new File("Mac.txt")));StringmacStr=Mac.readLine();StringipStr="255.255.255.255";//String macStr = "00:02:55:5D:78:D1";
nao estou conseguindo passar os paramentros do meu arquivo Mac.txt para a String macStr do meu programa.
O Cod inteiro - agradeço se alguem me ajudar. Obrigado
importjava.io.*;importjava.net.*;publicclassWakeOnLan{publicstaticfinalintPORT=3128;publicstaticvoidmain(String[]args){//BufferedReader Mac = new BufferedReader (new FileReader(new File("Mac.txt")));//String macStr = Mac.readLine();try{BufferedReaderin=newBufferedReader(newFileReader("Mac.txt"));Stringstr;while((str=in.readLine())!=null){if(str..contains("."))StringipStr=str;if(str..contains(":"))StringmacStr=str;}in.close();}catch(IOExceptione){}StringipStr="255.255.255.255";//String macStr = "00:02:55:5D:78:D1";try{byte[]macBytes=getMacBytes(macStr);byte[]bytes=newbyte[6+16*macBytes.length];for(inti=0;i<6;i++){bytes[i]=(byte)0xff;}for(inti=6;i<bytes.length;i+=macBytes.length){System.arraycopy(macBytes,0,bytes,i,macBytes.length);}InetAddressaddress=InetAddress.getByName(ipStr);DatagramPacketpacket=newDatagramPacket(bytes,bytes.length,address,PORT);DatagramSocketsocket=newDatagramSocket();socket.send(packet);socket.close();System.out.println("Wake-on-LAN packet sent.");}catch(Exceptione){System.out.println("Failed to send Wake-on-LAN packet: + e");System.exit(1);}}privatestaticbyte[]getMacBytes(StringmacStr)throwsIllegalArgumentException{byte[]bytes=newbyte[6];String[]hex=macStr.split("(\:|\-)");if(hex.length!=6){thrownewIllegalArgumentException("Invalid MAC address.");}try{for(inti=0;i<6;i++){bytes[i]=(byte)Integer.parseInt(hex[i],16);}}catch(NumberFormatExceptione){thrownewIllegalArgumentException("Invalid hex digit in MAC address.");}returnbytes;}}
EDIT - Sr. Aveia, por favor ponha os tags “[ code ]” em seu código Java. Isso pode ajudar alguém a ver, por exemplo, se você se esqueceu de alguma chave ou parêntese, com mais facilidade.
Luiz-SP
Qual é a mensagem de erro?
J
javanaveia
Pessoal eu quero passar como parametro o que está dentro do Mac.txt
para a String MacStr a String IpStr possui valor estático.
Primeira coisa - embora não seja necessário, sempre ponha chaves depois do “if”, “while” e “for”, mesmo que seja só uma linha.
Segunda coisa - porque é que você está declarando “String macStr” depois do if, dessa forma?
Terceira coisa - porque é que você repetiu os “…”?
while ((str = in.readLine()) != null) {
if (str..contains("."))
String ipStr = str;
if (str..contains(":"))
String macStr = str;
}
Primeira coisa - embora não seja necessário, sempre ponha chaves depois do “if”, “while” e “for”, mesmo que seja só uma linha.
Segunda coisa - porque é que você está declarando “String macStr” depois do if, dessa forma?
Terceira coisa - porque é que você repetiu os “…”?
vamos por partes…
o 1o erro indica que a variavel in nao faz parte do escopo em que esta sendo utilizado…
o 2o erro indica que vc, provavelmente, esta usando o java1.4 e o metodo contains eh do java1.5 … troque para indexOf (":") > 0
o 3o erro eh que vc esta tentando atribuir uma BufferedReader para uma String (vc deve ler da bufferedReader e guardar na String)
o 4o erro eh igual ao primeiro
J
javanaveia
Pessoal eu sou iniciante alguem poderia me falar a solução
tentei simplificar mas
erro
cannot find symbol
symbol : variable macStr
byte[] macBytes = getMacBytes(macStr);
^
1 error