# Ports prüfen -> Logikhilfe



## Alex Großmann (11. Juli 2011)

*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:


			
				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:

```
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++;
	}}
```
 (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...


```
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
```


----------



## ByeBye 154279 (11. Juli 2011)

Hey,

in deinem zweiten Beispiel:
Wie bzw. wo werden die Variablen "port", "winport1" "winport2" deklariert?

In dem Auszug änderst du die Variablen nicht, daher kann sich der Port, den du anzeigst, auch nicht ändern.

mfg
bo


----------



## SE (11. Juli 2011)

Was mir immer noch nicht klar wird : "gucken an welchem Port die Maschine läuft" ...
Hat dir schon mal wer verraten das es 65535 möglich Ports gibt ? Und das sogar zwei mal ... einmal TCP und einmal UDP. Selbst wenn du das auf n haufen Threads verteilst dauert das immer noch ganz schön lange. Du solltest dich hier also auf eine gewisse Anzahl beschränken.


----------



## Alex Großmann (11. Juli 2011)

Huhu BO,

danke für deine Antwort!

Also winport1 , winport 2 werden in der Methode deklariert (134,445).
port ist quasi ne globale Variable welche übergeben wird. In Ihr steht die Auswahl welche im Portprogramm getroffen wurde (also dort kann man einen beliebigen Port aussuchen und übergeben)..

Du hast echt recht, der zählt die Sache nicht hoch. Mal davon abgesehen das ich gern hätte das er von 0 - 65535 hochzählt und dann z.B. checkt obs eins der 3. vorbestimmten Ports ist, und ggf. abbricht...

@ Spike,
ja weiß ich, egal wie lang das Programm braucht, geht nicht um schnelligkeit... wobei ichs halt auch heftig finde, aber da werd ich halt mal paar Threads nebenher laufen lassen müssen. Wie gesagt, die Zeit ist egal, das kann ruhig nen ganzen Tag brauchen...


Edit:
Ich brauch btw nur TCP, also UDP muss ich nix prüfen.

So ich habs jetzt mal lauffähig bekommen  Er prüft erst ob die Windowsports erreichbar sind, wenn nicht ob der eig Port welcher eingegeben wurde erreichbar ist, wenn nicht (d.h. er würde abbrechen wenn einer der 3 da ist -> zeit sparen) zählt er von 0 -65535 hoch... 


```
try {
                 Socket s = new Socket(remote,port);
                 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);
                      
                       int port2 = 0;
                       while (check == false || port2 <= 65535){
                       
                    	  
                       
                    		   try {
                    			   
                    			   Socket s = new Socket(remote,port2);
                    			   System.out.println("Gegenstelle hat Port Nummer: " + port2 + ". IP Adresse:  " + hostname);
		                           s.close();
		                           check = true;
                    		   }
                             catch (IOException ex3) {
                           System.out.println("Gegenstellen hat nicht:  " + port2+ ". IP Adresse:  " + hostname);
                           
                           check = false;
                         }
                         port2 = port2 + 1;    
                     }
                 }
             }
         }
         }
```

Was haltet ihr davon? Er durchläuft grad meine Locale IP und dannach die eines Kollegen, mal sehen ob das klappt....
Als nächstes muss deffinitiv Multithreadding her 


Edit2:

Kann man die Methode threadfähigmachen und den thread auch gleich starten? will net extra das alles in einzelne klassen trennen-.-


----------



## javaDeveloper2011 (11. Juli 2011)

Hi,

Warum


> ```
> while (check == false || port2 <= 65535){
> ```


müssen nicht eher beide Bedingungen erfüllt sein?
also: 
	
	
	



```
while (!check && port2 <= 65535){
```

Multi-Threading ohne zusätzliche Klasse denke ich geht nicht, zumal du ja beliebig viele Objekte erzeugen willst um sie nebeneinander laufen zu lassen und in der Haupt-Klasse zu referenzieren. Eine anonyme Klasse würde es aber wohl auch tuen.

Gruß javaDeveloper2011


----------



## Alex Großmann (11. Juli 2011)

Danke! hast natürlich Recht mit der Schleife 

Was ist eine anonyme Klasse? Wie wird das dann aufgebaut? 

Ich mach meine Methode als thread und sag dann der anonymen Klasse das es x mal gleichzeitig laufen soll oder?


----------



## SE (11. Juli 2011)

Ähm ... also solche Aufgaben mit anonymen Klassen durchzuführen auf die man keinerlei Referenzen hat wäre äußerst schlecht da du ja wenn ein Thread erfolgt hat alle anderen "abbrechen" müsstest. Wie wir nun aus langer Java-Erfahrung wissen ist es ein nicht gerade tolles Design einen Thread von außen "gewaltsam" zu beenden. Viel mehr sollte man in seinen Thread *sofern er denn aus einer oder mehreren Schleifen besteht* regelmäßig auf eine global Status-Variable prüfen. Um soetwas allerdings mit anonymen Klassen zu tun müsstest du eben genau diese globale Variable "final" deklarieren was es dir verbitet diese im nachhinein zu ändern. "Echte" Klassen auf die man auch referenzieren kann eignen sich wenn überhaupt besser dafür.

Auch solltest du nicht den standard-Konstruktor von Socket benutzen da dieser ein viel zu langes Timeout hat. Um dies zu umgehen verwendet man stattdessen den null-Konstruktor *also den ohne jegliche Parameter* und ruft dann die Socket.connect(InetSocketAddress, int) Methode mit entsprechenden Timeout auf. Aber selbst wenn du das Timeout auf 2sec festlegst und meinet wegen 10 Threads gleichzeitig laufen lässt ergibt das immer noch einen Zeitaufwand von
65535 x 2sec / 10 Threads = 13107sec was ungefähr 220 Minuten oder 3 1/2 Stunden ergibt. Du kannst zwar auch mehr als 10 Threads starten ... jedoch wirst du dann nicht wesentlich schneller da bei einem "Standard" Windows die maximale Anzahl von gleichzeitigen Verbindungen auf 10 beschränkt ist *bei Win 7 glaube ich *ETWAS* höhre ... aber nicht viel*.
So ... und wenn du jetzt diese 3 1/2 Stunden *worst case* für EINEN Rechner nimmst ... dann kannst du dir ausrechnen das es für ein ganzes Netzwerk locker mehr als ne Woche dauern kann. Mit dem Standard-Timeout des Socket(String, int)-Konstruktors wirds natürlich noch länger weil dies länger als 2sec sind *sind glaub ich 5sec oder sowas*.

Du siehst also : mit ein wenig simpler Mathematik hebel ich deinen kompletten Ansatz aus ... da die benötigte Zeit im "worst case scenario" "schlechtester anzunehmender Umstand" in keinem Verhältnis zum Nutzen steht.

Ich selbst habe eine veränderte WinSocks-Lib die es mir ermöglicht bis zu 16'000 Verbindungen *pro Anwendung* und ALLE 65535 möglichen *wenn ALLE Ports belegt werden* gleichzeitig zu nutzen. Das hat allerdings den Preis das mein Windows , obwohl ich es rechtmäßig erworben , registriert und aktiviert habe , als NICHT-ECHT erkannt wird ... das wäre also keine Option für den Produktiven einsatz.


//EDIT
Mal ganz davon abgesehen das weder ein "normaler" Rechner noch ein relativ gutes Netzwerk mit einer solchen Flut von Paketen *in Bezug auf die veränderte WinSocks-Lib mit bis zu 16'000 Sockets pro Anwendung* fertig werden würde. Auch würde es ein "normaler" Rechner nicht mal fertig bringen so viele Threads laufen zu lassen *selbst ein Intel i7 mit 6 physischen Kernen aus denen sich dank Intel HT bis zu 12 logische machen lassen kommt nicht mit mehr als 6'000 bis 8'000 Threads klar*.


----------



## Alex Großmann (11. Juli 2011)

Spike, außer Frage, da geb dir schon Recht. Das war mir auch echt heut Mittag schon bewusst und ich habe mit dem Herrn geredet der das Proggi dann benutzt. Er meinte das es Ihm egal sei, hauptsache das prüft alle Ports. Ich finds genau so...schwachsinnig wie du, das steht in keinem Verhältniss.... 
Aber wie gesagt, wenn er so haben will, muss ichs so hinnehmen oder?
Ich habe nunmal die erste Range durch genommen, waren ca. 150 IP´s (alle on gewesen) und es ging ruck zuck, aber es waren auch keine ohne den 3 vorgegebenen Ports drinnen^^..


----------



## SE (11. Juli 2011)

Naja ... wenn ALLE Systeme auf den vorgegeben Ports erreichbar sind ist es schon klar das es recht fix geht. Ich habe ja auch nur das "worst case scenario" angeschnitten was passieren kann wenn eben viele Systeme NICHT "up-and-running" sind wie man so schön sagt.


----------



## Alex Großmann (11. Juli 2011)

Wie gesagt, mir ist das durchaus bewusst, aber andere Möglichkeiten hab ich ja leider nicht...
Wäre besser gekommen wenn mans in ner anderen Sprache umgesetzt hätte, aber meine 1000Zeilen code will ich net umsonst geschrieben haben^^


----------



## SE (11. Juli 2011)

Tja ... wie ich bereits an anderer Stelle erwähnte : hier wäre ein ICMP-Ping über eine C-Lib zumindest ein Anfang. Dadurch könnte man sehr schnell herausbekommen welche Systeme überhaupt erreichbar sind. Dann kann man diese immer noch den Port-Scan abfeuern. Aber wie gesagt : ich würde sowas nicht machen und schon gar nicht halbfertig abliefern nur um es dann vielleicht einmal im Monat laufen zu lassen *ich glaube öfter geht auch garnicht xD* nur damit die IT-Abteilung weis welches System welche Ports offen hat. Das ist deren Aufgabe ... nicht deine.


----------



## Alex Großmann (12. Juli 2011)

Ja, vielleicht kann ich das ja noch in Angriff nehmen, denn so hat das Programm nicht viel Sinn...
Die C Datei hab ich ja von Sheel schon...

Btw; ich habe meine Methode da oben jetzt um die Ausgabe mit farbigen Text modifiiert. 

```
private static JTextPane ausgabe = new JTextPane();
private static StyledDocument doc = (StyledDocument)ausgabe.getDocument();
	static javax.swing.text.Style windows = doc.addStyle("StyleName", null);
	static javax.swing.text.Style gewählt = doc.addStyle("StyleName", null);
StyleConstants.setBold(windows, true);
		StyleConstants.setFontFamily(windows, "SansSerif");
		StyleConstants.setBackground(windows, Color.red);
		StyleConstants.setFontFamily(windows, "SansSerif");
		StyleConstants.setBackground(windows, Color.green);
```


```
public static void scan ( InetAddress remote, int port) {
	       
	     
	     int winport1 = 135;
	     int winport2= 445;
	     boolean check = false;
	      
	     String hostname = remote.getHostName();
	      
              try {
                 Socket s = new Socket(remote,port);
                 System.out.println("Gegenstelle hat Port Nummer: " + port+ ". IP Adresse:  " + hostname);
                 s.close();
                 try {
					doc.insertString(doc.getLength(), "Die Gegenstelle hat den Gesuchten Port: "+port+"                       IP Adresse: "+hostname +"\n", gewählt);
				} catch (BadLocationException e) {
					// TODO Auto-generated catch block
					e.printStackTrace();
				}
                 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();
                     try {
						doc.insertString(doc.getLength(), "Die Gegenstelle hat den Gesuchten Port: "+port+"                       IP Adresse: "+hostname+"\n", windows);
					} catch (BadLocationException e) {
						// TODO Auto-generated catch block
						e.printStackTrace();
					}
                     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();
                         try {
							doc.insertString(doc.getLength(), "Die Gegenstelle hat den Gesuchten Port: "+port+"                       IP Adresse: "+hostname+"\n", windows);
						} catch (BadLocationException e) {
							// TODO Auto-generated catch block
							e.printStackTrace();
						}
                         check = true;
                     }
                         catch (IOException ex2) {
                       System.out.println("Gegenstellen hat nicht:  " + winport2+ ". IP Adresse:  " + hostname);
                      
                       int port2 = 0;
                       while (check == false && port2 <= 65535){
                       
                    	  
                       
                    		   try {
                    			   
                    			   Socket s = new Socket(remote,port2);
                    			   System.out.println("Gegenstelle hat Port Nummer: " + port2 + ".IP Adresse:  " + hostname);
                    			   try {
									doc.insertString(doc.getLength(), "Die Gegenstelle hat den Gesuchten Port: "+port+"                       IP Adresse: "+hostname+"\n", null);
								} catch (BadLocationException e) {
									// TODO Auto-generated catch block
									e.printStackTrace();
								}
                    			   s.close();
		                           check = true;
                    		   }
                             catch (IOException ex3) {
                           System.out.println("Gegenstellen hat nicht:  " + port2+ ". IP Adresse:  " + hostname);
                           
                           check = false;
                         }
                         port2 = port2 + 1;    
                     }
                 }
             }
         }
         }
```

Leider gibt der immer nur den letzten Eintrag Farbig aus und die anderen sind stinknormal? Wie kann man das ändern?


----------



## SE (12. Juli 2011)

Was mich nur wundert ist warum du gerade auf TCP/135 prüfst ?
Das ist laut IANA kein Port welcher nur von M$ genutzt wird. Viel mehr ist es andersrum das M$ hier einen Dienst verwendet der nunmal laut IANA diesen Port als Standard hat.
Laut IANA sind folgende Ports offiziell M$ zugeschrieben

445/TCP/UDP
568/TCP/UDP
569/TCP/UDP
691/TCP/UDP
1270/TCP/UDP
1433/TCP/UDP
1434/TCP/UDP
1477/TCP/UDP
1478/TCP/UDP
1512/TCP/UDP

Weiter bin ich die Liste nicht durchgegangen ... aber das nur mal so als kleine Stütze woran du SICHER einen M$-Rechner erkennen kannst. 135/TCP/UDP gibt es nämlich auch unter Linux wenn entsprechende Dienste ausgeführt werden.


----------



## Alex Großmann (12. Juli 2011)

Hiho Spike,

Ja, auf 135 und 445 laufen Windowsdienste. Ich hab mit ihm nochmal geredet. Das mit den 65k Ports durchzählen fällt jetzt komplett weg.
Er will jetzt wissen "ist ip da? wenn nicht -> vergessen, wenn ja -> schauen ob port x da, wenn nein -> windowsports da? -> wenn nein, dann IP anzeigen".
Da der Rechner dann weder Port x noch nen Windowsport hat ist er Kritisch und muss behandelt werden.... das vereinfacht die Sache nun ungemein 

Bitte schau dir mal das Problem mit dem Markieren im oberen Post an! Würd mich sehr freuen!


----------



## SE (12. Juli 2011)

Alex Großmann hat gesagt.:


> Ja, auf 135 und 445 laufen Windowsdienste.


Eben NICHT !
TCP/135 ist laut IANA *KEIN* offizieller Windows-Port. M$ verwendet diesen in-offiziell da auf TCP/135 nunmal ein Dienst läuft der für das RCP nötig ist. Da dies so in der IANA-Liste steht gibt es diesen zwangsläufig auch unter Linux da es unter Linux auch sowas wie RCP gibt.


So .. und um deiner mitlerweile 3 Wochen dauernden Diskusion endlich ein Ende zu setzen *weil es stört mitlerweile einige User hier ... nicht nur mich* :

Nutze eine C-Lib welche Java ein ICMP-Ping zur verfügung stellt ... UND PUNKT !
Es reicht ... das Vorhaben ist 1) viel zu hoch für dich weil du auf dem Stand eines Anfängers bist *nach dem was du mir via PN so geschrieben hast* und 2) will da jemand nur einen Praktikanten der ihm nichts kostet die Zeit totschlagen ...
Sag einfach zum Big Boss dass du diese Aufgabe nicht mehr willst und sich jemand darum kümmern soll der dafür auch bezahlt wird und dessen Job es ist sich um die IT-Infrastruktur in der Firma zu kümmern.
Und wenn sich dafür jemand zu fein ist dann zeig doch diesem Menschen mal wie lange und vor allem dreist du uns jetzt schon mitlerweile mit diesem Thema auf den Geist gehst.

Du hast keinen Plan vom Programmieren ... und in der Schule lernst du eigentlich C ... und auch da bist du grad mal beim Grundgerüst OOP ... vielleicht wäre ein WENIG Eigeninitiative nicht schlecht wenn du wirklich mal Programmieren können willst.

Und noch eins : für einen von uns wäre das ganze nur ein Aufwand von vielleicht ein paar Stunden gewesen das Ding komplett zu implementieren ... weil wir 1) Ahnung davon haben 2) die Initiative dazu haben 3) wissen was mit Java machbar ist und was nicht 4) was es für Alternativen gibt und am wichtigsten 5) wissen wo unsere Grenzen sind.

Ich möchte dich hiermit noch einmal instädig darum beten das du diesen Mist endlich loslässt ... denn es bringt weder uns , noch dir , noch dem der dir das Aufgetragen hat etwas wenn sich damit 20 Leute über 3 Foren hinweg verteilt beschäftigen ...


----------



## Alex Großmann (12. Juli 2011)

Was, es stört dich? Ich dacht du hilfst gern...
Und wem störts noch? Zwinge doch niemanden meine Threads anzuschaun oder mir zu helfen. Ich war bisher immer sehr Dankbar und finds jetzt etwas unfair das du mich so anfährst... Ich zeig genug eigeninitative, ich hab Stunden Foren und Tutorials durchforstet, das weißt du auch. Obendie ganze Soße kam von mir allein. Hab sogarn nen Java Buch aus eigner Tasche gekauft, welches ich die ganze Zeit wälze..-.-

Als ich herkam konnt ich nicht mal was mit Swing, und jetzt hab ich eig das ganze Gerüst gebastelt! Unter anderem durch die hilfreichen Tipps der User. 
Und das du jetzt hier so ein vom Harry lässt nur weil dich Navy mal wiedersprochen hat das es auch mit normalen Mitteln geht, du aber anscheinend verletzt bist das deine JNi Implementierung abgeschlagen wurde, find ich es jetzt unfair das du es auf mich ablädst.

Was deine Aufzählungen von wegen "bei uns wäre das nur ne sache von minuten gewesen" soll weißte selbst nicht.

Das Forum  trägt das Motto "User helfen Usern" und nicht "wir sind pro und flamen dich weil du so viel fragst" ....

Bin echt etwas enttäucht grad, hatte eigentlich die Auffassung das du gern hilfst, und wenn nicht, halt nichts schreibst dazu...

Zum Thema
Ob der ****** Port in der Liste steht oder nicht, hier ist es halt so. Da brauch man nicht 10 Seiten drüber zu Diskutieren. Die setzen hier alles selbst auf und Konfigurieren es selbst, wenn er meint das er auf 135 o. 455 was finden will dann solls so sein.-.-
Mein Problem oben war wie man mit der JTextPane etwas markiertes ausgibt und nicht ob der Port in Liste XY steht und "offiziell" zulässsig ist.

Auch wenn ichs jetzt bei dir und den anderen dennen ich auf die Eier gehe verkackt habe, so wollt ichs dennoch mal schreiben, den runterbuttern muss man sich auch als fragender nicht lassen ... oO

Das Programm ist vielleicht sinnlos und so; aber ich habe dadurch Swing, Datenbanken, Internetprogrammierung, String splitten und auf x Hochzählen ect. dazu gelernt. Dazu wurd ich mit vielen Problemen konfrontiert und die konnte ich letztendlich unter anderem durch eure Hilfe lösen. Ich hab mich immer bedankt ect. und habe immer was dazu gelernt.
Ich hab nie gesagt "schreibt mal den Code für mich" ich hab mich immer bemüht mit zu wirken ect!..


----------



## SE (12. Juli 2011)

Nur mal so als KLEINE Anmerkung am Rand um dir vielleicht die Augen zu öffnen

1) Das was von dir verlangt wird ist alleine mit Java NICHT vollständig umsetzbar.
2) Wird von dir mehr verlangt als du kannst und dir zuztrauen ist.
3) Es gibt mitlerweile User *ich enthalte mich hier der Nennung von Namen* die glauben das du damit nicht nur gutes im Auftrag eines Vorgesetzten vorhast.
4) Es ist mir persönlich echt egal was du konntest und was du kannst ... es ist nur Zeitverschwendung, sowohl meiner, deiner als auch der Zeit anderer.
5) Der Aufwand steht in keinem sinnvollen Verhältnis zum Nutzen.
6) Ein wenig Googlen und man hätte eine Handvoll von Programmen finden können *einige davon sogar OpenSource* die genau das machen was derjenige da von dir will.

Mein Schlusswort dir und diesem Thema gegenüber :
Fragen bei konkreten Problemen stellen und auf Hilfe hoffen : JA
Andere darum anbetteln die Arbeit für einen zu erledigen *weil man es selbst nicht kann / will* : NEIN

Wir sind hier nicht dazu da dir Java oder Programmieren beizubringen. Wir sind lediglich eine Community die Usern bei konkreten Problemen mit ihrer Erfahrung hilft. Das was du hier die ganze Zeit veranstaltest wäre in der Job-Börse besser aufgehoben gewesen.


----------



## Alex Großmann (12. Juli 2011)

zu 3. Was? Versteh die Unterstellung nicht ganz...

6) ja die hat man, keine Frage, doch es ging um den Lerneffekt. Und auch wenns dir egal ist was ich dazu gelernt habe oder nicht (stimmt schon bist ja kein Lehrer), es ist halt dennoch der Fall gewesen.
Und du bringst mir nichts bei, sondern ich hab wie gesagt stehts mitgewirkt, und jeder der hier Fragt hat irgendwo ne wissenslücke, sonst würde er ja nicht fragen -> du hilfst -> sie lernen  

Im Stick steht KLAR das man alles fragen kann solang man immer mitwirkt, und das habe ich getan (außer vll letztens im C Forum)! 

zu 4.) wieso Zeitverschwendung? Weil du den großen Sinn, den fehlenden Speed ect. nicht findest? ... 

Und btw; am Rande so zu sagen; was du mitunter veranstalltest, dazu gehört hier nen Zirkus draus zu machen, oder im Tutorialbereich einträge schlecht zu reden, gefällt auch nicht jeden...
Und jetzt ist mal Schluss mit dem Theater, okay?

Edit: und ja, tut mir leid das ich euch Belästigt habe, das kommt nicht mehr vor ...


----------



## SE (12. Juli 2011)

Warum .. is halt meine Art ... wenn mir halt etwas wirklich SCHE!ßE ist ... dan sag ich das auch so straight raus.
Was das zu dem Müll mit dem missbrauchtem Tut als Linksammlung für SemperVideo angeht
1) die Jungs haben kein Plan wo von sie reden
2) die Quali ist miserabel
3) ein Tut als Link-Liste zu missbrauchen verstößt gegen die Foren-Regeln

Und JA : es fällt mir wahrlich schwer "DEN SINN" hinter dieser wirklich DUMMEN Aufgabenstellung zu erfassen ...
Warum DU als Praktikant damit beauftragt wurdest lässt mir nur einen Schluss zu : der jenige der dich drum gebeten hat weis genau was für Flaschen da in der IT-Abteilung sitzen.

Daraus lernen : ähm sorry ... aber der Lerneffekt aus diesem Schwachsinn gleicht 0
Wo bitte ist es denn so schwer sich einfach was aus Google zu saugen ? Den Typen der dir das aufgetragen hat versteh ich genau so wenig ...

Aber naja ... wer meint Zeit und Geld verschwenden zu müssen soll das ruhig tun ...

ich tu es mir jedenfalls nicht mehr mit an

*BLOCK*


----------



## Navy (12. Juli 2011)

SPiKEe hat gesagt.:


> Nur mal so als KLEINE Anmerkung am Rand um dir vielleicht die Augen zu öffnen
> 
> 1) Das was von dir verlangt wird ist alleine mit Java NICHT vollständig umsetzbar.



Doch ist es. Java bietet alles an, was man dazu braucht.



> 2) Wird von dir mehr verlangt als du kannst und dir zuztrauen ist.



Vielleicht. Aber auch hier heißt es Geduld und vor allem ist es auch für Anfänger keine unlösbare Aufgabe n-Sockets aufzumachen und Pakete zu senden.



> 3) Es gibt mitlerweile User *ich enthalte mich hier der Nennung von Namen* die glauben das du damit nicht nur gutes im Auftrag eines Vorgesetzten vorhast.



Jetzt wird es lächerlich. Was genau soll ein Servicemapping genau schlimmes machen? Portscans sind weder böse, noch verboten, noch in irgendeiner Weise "moralisch verurteilbar"



> 4) Es ist mir persönlich echt egal was du konntest und was du kannst ... es ist nur Zeitverschwendung, sowohl meiner, deiner als auch der Zeit anderer.



Das kannst Du aber auch jedem selber überlassen. Gerade in Hinsicht auf Deinem (und jetzt sorry) offen gezeigtem Halbwissen über Netzwerkkommunikation.



> Der Aufwand steht in keinem sinnvollen Verhältnis zum Nutzen.



Es geht hier auch um seine Lernkurve. Da man mit seinen Aufgaben wächst und das hier keine Raketenwissenschaft ist, sehe ich das Verhältnis als für ihn günstig an.



> Ein wenig Googlen und man hätte eine Handvoll von Programmen finden können *einige davon sogar OpenSource* die genau das machen was derjenige da von dir will.



Nochmal: Lernkurve



> Andere darum anbetteln die Arbeit für einen zu erledigen *weil man es selbst nicht kann / will* : NEIN



d'accord

Und nochmal zum Schluss: Ein Ping ist hier aus mehreren Gründen nicht angebracht. Der beste ist wohl, dass er mindestens überflüssig ist . Ein TCP-Connect liefert (hier) alle Informationen die Ping auch liefern kann und gleichzeitig noch mehr. 

Die Portverteilung laut IANA ist eine Empfehlung um die Standardisierung zu ermöglichen. Das heißt aber nicht, dass man einen Service umlegen kann wie man möchte. Darüber hinaus gibt es Dinge wie Portknocking, die auch über die well-known-ports erfolgen können oder andere Spielereien. 

Zuletzt: Auch wenn hier recht aktiv im Forum unterwegs bist und größtenteils gute Beiträge lieferst, bitte ich Dich dennoch Dich in Deiner Art zu zügeln. Du bist keine Art BOFH und möchtest das auch hier nicht ausleben. Der Posten ist schon belegt.


----------



## Alex Großmann (12. Juli 2011)

Fakt ist, dass das Programm jetzt super läuft, und auch nicht zu langsamm. 
Das funktioniert einwandfrei über Sockets.
Ich habe es allerdings noch ein wenig verändert, so das man nun zuerst mal kurz mit inetaddress die IP anpingt, ist die erreichbar prüft er den port ect... 
Danke nochmal an alle die geholfen haben!


----------

