tou a trabalhar numa aplicação que envia um datagram socket para rede, a fim de ser detectado por dispositivos da empresa. O port de destino é fixo, uma vez que os dispositivos trabalham todos sempre com o mesmo porto 30718, no entanto respondem para este mesmo porto e não para o que enviou o pedido.
Uma vez que foi criado um datagram socket para recepção das respostas e é criado para o porto 30718. Queria colocar um porto dinâmico, ou seja que a aplicação detecte qual foi o port que enviou o pedido para receber a resposta.
“Porto” em português de Portugal é “porta” no português brasileiro e ambas as palavras são a tradução para “port”.
De qualquer maneira, para obter a porta (ou porto) do datagrama de origem, usa-se o método “getPort” se for um datagrama que foi recebido de uma determinada porta.
Obrigado. utilizei o getLocalPort(); mas agora não estou a conseguir passar o valor para fora do meu try catch.
publicvoidsendBroadcastReq(NetworkInterfacenetIf){if(netIf!=null){InetAddressaddress=null;InetAddresslocal_addr=null;Enumeration<InetAddress>ips=netIf.getInetAddresses();while(ips.hasMoreElements()){try{local_addr=ips.nextElement();if(!local_addr.isLoopbackAddress()&&(local_addr.getAddress().length==4)){Discover.s_out("Create UDP socket "+local_addr+":"+port+";",null,2);dsocket=newDatagramSocket(port+1,local_addr);lPort=dsocket.getLocalPort();System.out.println(lPort);dsocket.setBroadcast(true);dsocket.setReuseAddress(true);address=InetAddress.getByName("255.255.255.255");//Create datagrampacket with a message, ip address and the especific port.DatagramPacketpacket=newDatagramPacket(message,message.length,address,port);//System.out.println("Address:" +address);dsocket.send(packet);}}catch(Exceptione){Discover.s_out("Can't get broadcast address",e);e.printStackTrace(System.out);return;}if(dsocket!=null)dsocket.close();}}}
na linha 23 consigo imprimir o valor obtido para o output, mas não estou a obtê-lo na outra classe que preciso dele... alguma ideia de como resolver isso? x/
Hebert_Coelho
Onde o atributo “lPort” é declarado? Teria como você colocar o código da outra classe?