Alex Großmann
Erfahrenes Mitglied
Ports prüfen -> Logikhilfe && Exceptions
Hallo
In der Hoffnung meinen letzten Hilferuf abzugeben (dannach werd ich mal schauen ob ich evt. euch mal helfen kann xD) muss ich mich nochmal an euch wenden.
Ich will Ports über Socket verbindungen Prüfen, das ist ja echt easy, aber ich hab ein paar Probleme mit den Exceptions.
Folgende Logik muss das haben:
Programm schaut ob port x auf ip y (wurden beide vorher eingegeben und der Methode übermittelt) vorhanden ist. Wenn ja, dann wayne und weiter mit der nächsten IP, wenn nein dann schauen ob Port 135 oder 445 an der IP ist. Wenn ja dann ausgeben. Wenn nicht, dann schauen welcher Port an der IP hängt.
Die if und for verzweigungen trau ich mir noch zu, aber ich hab keine Ahnung wie ich die Exceptions bekomme die quasi ja/nein sagen.... könnt Ihr mir da helfen?
Außerdem: Um das ganze zu beschleunigen, weil Port prüfen dauerd ja gewisse Zeit, will ich das ganze Multithreadding fähig machen. Kann man eine Methode threadfähigmachen? Oder muss es ne Klasse sein?
Edit:
Ich habe nun in der API folgendes gefunden:
Ich verstehs trotzdem nicht.... ich frag also quasi: hey ist port x bei dir offen? -neee der ist belegt.
Das heißt ja dann quasi das etwas drauf läuft, und ich will ja quasi wissen ob was drauf läuft..
Aber wenn jetzt z.b. Port x zu wäre, und der schaut welche Ports offen sind, macht das doch gar keinen Sinn oder?
Edit2:
Ich hab jetzt mal sowas geschrieben:
(Exception Ausgaben noch nicht überarbeitet
)
Leider bekomm ich ne "java.net.ConnectException: Connection timed out: connect" Exception... versteh nicht warum, den wenn ich nur nen Socket auf die IP und Port abgebe gehts, aber hier nicht oO
Edit3:
Hiermit gehts schonmal....nur leider zählter die Portnummer nicht hoch? Warum das den...
Hallo

In der Hoffnung meinen letzten Hilferuf abzugeben (dannach werd ich mal schauen ob ich evt. euch mal helfen kann xD) muss ich mich nochmal an euch wenden.
Ich will Ports über Socket verbindungen Prüfen, das ist ja echt easy, aber ich hab ein paar Probleme mit den Exceptions.
Folgende Logik muss das haben:
Programm schaut ob port x auf ip y (wurden beide vorher eingegeben und der Methode übermittelt) vorhanden ist. Wenn ja, dann wayne und weiter mit der nächsten IP, wenn nein dann schauen ob Port 135 oder 445 an der IP ist. Wenn ja dann ausgeben. Wenn nicht, dann schauen welcher Port an der IP hängt.
Die if und for verzweigungen trau ich mir noch zu, aber ich hab keine Ahnung wie ich die Exceptions bekomme die quasi ja/nein sagen.... könnt Ihr mir da helfen?

Außerdem: Um das ganze zu beschleunigen, weil Port prüfen dauerd ja gewisse Zeit, will ich das ganze Multithreadding fähig machen. Kann man eine Methode threadfähigmachen? Oder muss es ne Klasse sein?
Edit:
Ich habe nun in der API folgendes gefunden:
Java API hat gesagt.:Throws:
UnknownHostException - if the IP address of the host could not be determined.
IOException - if an I/O error occurs when creating the socket.
SecurityException - if a security manager exists and its checkConnect method doesn't allow the operation.
Ich verstehs trotzdem nicht.... ich frag also quasi: hey ist port x bei dir offen? -neee der ist belegt.
Das heißt ja dann quasi das etwas drauf läuft, und ich will ja quasi wissen ob was drauf läuft..
Aber wenn jetzt z.b. Port x zu wäre, und der schaut welche Ports offen sind, macht das doch gar keinen Sinn oder?
Edit2:
Ich hab jetzt mal sowas geschrieben:
Java:
while (port1 < 65536 && check == false){
try {
Socket s= new Socket (remote, port1);
System.out.println("Ein Programm horcht auf: "+port1+". IP: " + hostname);
check = true;
s.close();
} catch (IOException e) {
System.out.println("Kein Programm horcht auf: " + port1+ " . IP: "+hostname);
e.printStackTrace();
try {
Socket s= new Socket (remote, winport1);
System.out.println("Die IP: " + hostname + "hängt an Win-Port: " + winport1);
check = true;
s.close();
} catch (IOException b) {
System.out.println("Kein Programm horcht auf: " + port1+ " . IP: "+hostname);
b.printStackTrace();
check = false;
try {
Socket s= new Socket (remote, winport2);
System.out.println("Die IP: " + hostname + "hängt an Win-Port: " + winport2);
check = true;
s.close();
} catch (IOException a) {
System.out.println("Kein Programm horcht auf: " + port1+ " . IP: "+hostname);
a.printStackTrace();
check = false;
}
catch (SecurityException c ){
b.printStackTrace();
System.out.println("Check Versuch wird geblockt");
}
}
catch (SecurityException b ){
b.printStackTrace();
System.out.println("Check Versuch wird geblockt");
}}
if (check == false){
port1++;
}}

Leider bekomm ich ne "java.net.ConnectException: Connection timed out: connect" Exception... versteh nicht warum, den wenn ich nur nen Socket auf die IP und Port abgebe gehts, aber hier nicht oO
Edit3:
Hiermit gehts schonmal....nur leider zählter die Portnummer nicht hoch? Warum das den...
Java:
for ( int port2 = port1; port2 < 65536; port2++) {
while (check == false){
try {
Socket s = new Socket(remote,port2);
System.out.println("Gegenstelle hat Port Nummer: " + port+ ". IP Adresse: " + hostname);
s.close();
check = true;
}
catch (IOException ex) {
System.out.println("Gegenstellen hat nicht: " + port+ ". IP Adresse: " + hostname);
try {
Socket s = new Socket(remote,winport1);
System.out.println("Gegenstelle hat Port Nummer: " + winport1+ ". IP Adresse: " + hostname);
s.close();
check = true;
}
catch (IOException ex1) {
System.out.println("Gegenstellen hat nicht: " + winport1+ ". IP Adresse: " + hostname);
try {
Socket s = new Socket(remote,winport2);
System.out.println("Gegenstelle hat Port Nummer: " + winport2+ ". IP Adresse: " + hostname);
s.close();
check = true;
}
catch (IOException ex2) {
System.out.println("Gegenstellen hat nicht: " + winport2+ ". IP Adresse: " + hostname);
}
}
}
}//for ends
}//if ends
Zuletzt bearbeitet: