Hallo,
ich experimentiere seit einiger Zeit an so manchen Programmen, eins von denen ist eines, welches alle vorhandenen IP-Adressen samt Computernamen ausgeben soll, was mir zwar gelungen ist, jedoch dauert es 2³²³²³²³ stunden bis es fertig ist, da ich nicht verstehe wie ich ein Socket Timeout einstellen kann, habe es bereits mit verschiedenen möglichkeiten versucht, eines war mit socket.setsotimeout(zahl), und noch eine mit internetaddress oder sowas, funktioniert alles nicht, denn sobald ich einen timeout einstelle, egal ob es ein wert von 50 - 50000 ist, findet der scanner keinen einzigen rechner mehr, frage mich nur wieso...
Hier der Code:
explizit ist der schwerpunkt des problems in Zeile 90 - 106, in der Object methode, in welcher die netzabfrage stattfindet.
Bin um jede hilfe dankbar,
Mfg,
SkonroX.
ich experimentiere seit einiger Zeit an so manchen Programmen, eins von denen ist eines, welches alle vorhandenen IP-Adressen samt Computernamen ausgeben soll, was mir zwar gelungen ist, jedoch dauert es 2³²³²³²³ stunden bis es fertig ist, da ich nicht verstehe wie ich ein Socket Timeout einstellen kann, habe es bereits mit verschiedenen möglichkeiten versucht, eines war mit socket.setsotimeout(zahl), und noch eine mit internetaddress oder sowas, funktioniert alles nicht, denn sobald ich einen timeout einstelle, egal ob es ein wert von 50 - 50000 ist, findet der scanner keinen einzigen rechner mehr, frage mich nur wieso...
Hier der Code:
Java:
package LAN_SCAN;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
import java.net.InetAddress;
import java.net.Socket;
public class scan
{
/* (c) by SkonroX */
private static Object[] e;
private static String hostip = null;
private static int port = 445;
private static Socket socket;
private static InetAddress host;
private static File file = new File( System.getProperty( "user.home" ) + "/desktop/IP-Liste.txt" );
private static long roundTripTime;
private static BufferedWriter bw = null;
private static String klasse = "c";
private static void main( String[] args )
{
if( klasse == "a" )
{
try { classa(); }
catch ( IOException e ) { e.printStackTrace(); }
}
if( klasse == "b" )
{
try { classb(); }
catch ( IOException e ) { e.printStackTrace(); }
}
if( klasse == "c" )
{
try { classc(); }
catch ( IOException e ) { e.printStackTrace(); }
catch ( InterruptedException e ) { e.printStackTrace(); }
}
if( klasse != "a" && klasse != "b" && klasse != "c" ) { System.out.println( "Ungültige Eingabe!" ); }
}
private static void classc() throws IOException, InterruptedException
{
int j = 20;
bw = new BufferedWriter( new FileWriter( file ) );
for( int i = 155; i < 256; i++ )
{
hostip = "172.16." + j + "." + i;
if( ( e = ping( hostip, port ) ) != null )
{
System.out.println( "HostIP: " + e[ 0 ] + " " + "HostName: " + e[ 1 ] + " " + "MilliSeconds: " + e[ 2 ] );
bw.write( "HostIP: " + e[ 0 ] + " " + "HostName: " + e[ 1 ] + " " + "MilliSeconds: " + e[ 2 ] );
bw.newLine();
bw.flush();
}
if( i == 255 && j < 256 ) { j++; i = 0; }
if( j > 255) { break; }
}
bw.close();
}
private static void classb() throws IOException
{
int j = 0, k = 0;
for( int i = 0; i < 256; i++ )
{
hostip = "172." + k + "." + j + "." + i;
if( ( e = ping( hostip, port ) ) != null )
{
System.out.println( "HostIP: " + e[ 0 ] + "\n" + "HostName: " + e[ 1 ] + "\n" + "MilliSeconds: " + e[ 2 ] );
}
if( i == 255 ) { j++; i = 0; }
if( j == 255 && i == 255 ) { k++; i = 0; j = 0; }
if( j > 255 || k > 255) { break; }
}
}
private static void classa() throws IOException
{
int j = 0, k = 0, l = 0;
for( int i = 0; i < 256; i++ )
{
hostip = l + "." + k + "." + j + "." + i;
if( ( e = ping( hostip, port ) ) != null )
{
System.out.println( "HostIP: " + e[ 0 ] + "\n" + "HostName: " + e[ 1 ] + "\n" + "MilliSeconds: " + e[ 2 ] );
}
if( i == 255 ) { j++; i = 0; }
if( j == 255 && i == 255 ) { k++; i = 0; j = 0; }
if( k == 255 && j == 255 && i == 255 ) { l++; i = 0; j = 0; k = 0; }
if( j > 255 || k > 255 || l > 255) { break; }
}
}
public static Object[] ping( String hostip, int string )
{
try
{
roundTripTime = System.nanoTime();
host = InetAddress.getByName( hostip );
socket = new Socket( host, string );
roundTripTime = ( System.nanoTime() - roundTripTime ) / 1000000L;
socket.close();
return ( new Object[]{ host.getHostAddress(), host.getHostName(), roundTripTime } );
}
catch( Exception e )
{
System.out.println( e + " = " + hostip );
return null;
}
}
}
explizit ist der schwerpunkt des problems in Zeile 90 - 106, in der Object methode, in welcher die netzabfrage stattfindet.
Bin um jede hilfe dankbar,
Mfg,
SkonroX.