Więc tak, kod jest fragmentem serwera tcp. Chodzi o to, że linia:
String data = dataStream.readUTF();
przechowuje ip ktore jest wprowadzane w kliencie i wysylane do serwera. teraz serwer ma za zadanie wyswietlic interwejsy dla tego wlasnie ip. Czy robie to poprawnie i wlasciwie?
Tylko problem w tym ze nie wiem gdzie podstawic ta zmienna data(czytaj ip) zeby wyswietlalo interfejsy dla wprowadzanego ip a nie dla komputera na ktorym pracuje. Czy to wgl jest mozliwe?
Logicznie rzecz biorac tak, fizycznie moze wchodzi w gre bezpieczenstwo i tego sie nie da wykonac, zebym skanowal kazde ip sieci pod wzgledem interfejsu...
Jesli jednak sie da to jak to moyfikowac?
public void run() {
try
{
InputStream stream = client.getInputStream();
DataInputStream dataStream = new DataInputStream(stream);
while(true)
{
try
{
String data = dataStream.readUTF();
System.out.println(String.format("Klient %s powiedzial %s",client.getRemoteSocketAddress(),data));
Enumeration<NetworkInterface> interfaces;
List<InterfaceAddress> list = new ArrayList<InterfaceAddress>();
Enumeration<InetAddress> inet;
try
{
interfaces = NetworkInterface.getNetworkInterfaces();
while(interfaces.hasMoreElements())
{
NetworkInterface iface = interfaces.nextElement();
/*
System.out.println(iface.getDisplayName());
System.out.println(iface.getName());
System.out.println("Loopback: " + iface.isLoopback());
System.out.println("Vitrual: " + iface.isVirtual());
System.out.println("UP: " + iface.isUp());
System.out.println("--------------");
*/
if(!iface.isLoopback() && iface.isUp() && !iface.isVirtual())
{
list = iface.getInterfaceAddresses();
for(InterfaceAddress address : list)
{
System.out.println(address.toString());
//System.out.println(address.getBroadcast());
}
inet = iface.getInetAddresses();
while(!inet.hasMoreElements())
{
InetAddress address = inet.nextElement();
System.out.println(address.getHostAddress());
}
}
}
}
catch (SocketException e) {
e.printStackTrace();
}