# Terminal-Server (Windows 2003) und Java



## Wolfgang Lenhard (2. Mai 2009)

Hi,
ich habe bislang Client/Server-Anwendungen geschrieben, die über Sockets kommunizieren. Die Software klappt soweit recht gut und läuft stabil auf unterschiedlichen Betriebssystemen. Ein Kunde hat gefragt, ob die Software auch Terminal-fähig ist und über die Deployment-Mechanismen von Windows 2003 verteilt werden kann.
Da bin ich persönlich etwas überfragt. Kennt jemand von Euch gute Tutorials über Terminal-Server und über Windows 2003?

Viele Grüße,
   Wolfgang


----------



## sparrow (3. Mai 2009)

Ich bin mir nicht ganz sicher, aber wenn mich nicht alles täuscht muss dafür:
die Programm-Dateien in "\Programm Files" und die benutzerspezifischen Dateien im entsprechenden Profil des Benutzers abgelegt werden. Wo ich mir unsicher bin sind Config-Dateien für das Programm.

Gruß
Sparrow


----------



## Alex_winf01 (3. Mai 2009)

@Wolfgang Lenhard

ich habe für mehrere Kunden ein Programm entwickelt, was auch auf Terminalserver sowie Windows 2003. Ich habe das Programm normal entwickelt und in ein jar-File gepackt. Das hat keine Probleme gemacht.


----------



## Wolfgang Lenhard (3. Mai 2009)

Hi,
vielen Dank. Das hilft mir weiter. Die Nutzerdaten lege ich grundsätzlich im Benutzerverzeichnis ab und das Programm wird in Program Files installiert. Dann scheint das soweit in Ordnung zu sein.
Das Seltsame ist nur, dass die Server-Anwendung offensichtlich mit einer anderen Anwendung kollidiert (Software für Arztpraxen), die offensichtlich alle (!) Ports zu belegen versucht. Wenn mein Programm zuerst startet (benötigt einen Port; frei einstellbar), dann läuft es problemlos, aber nicht die andere Software. Umgekehrt ist es, wenn zuerst die andere Software startet. Leider ist nicht rauszukriegen, welche Ports das andere Programm nicht belegt. Die andere Software-Firma (bzw. deren deutscher Vertrieb) meinte daraufhin, mein Programm sei halt nicht terminal-fähig. Leider konnten sie aber nicht sagen, welche Ports ihr Programm zu belegen versucht.
Das scheint dann aber letztendlich eine Unversträglichkeit zweier verschiedener Programme zu sein und hat wohl eher nichts mit der Terminal-Sache zu tun.

Danke und viele Grüße,
  Wolfgang


----------



## sparrow (4. Mai 2009)

Das klingt seltsam.
Ist das Programm für die Praxis ebenfalls in Java geschrieben?
Verwendest du RMI?
Genaue Fehlermeldung?


----------



## Wolfgang Lenhard (4. Mai 2009)

Das Problem ist, dass es so schwer ist, an genaue Informationen zu kommen. Das Ganze durchläuft verschiedene Supports, bis es schließlich sehr verwaschen beim mir als Entwickler ankommt. Die Kunden haben ein Firmennetzwerk, sind aber was das Know-How angeht völlig blank. Der Support der anderen Software ist ausschließlich in der Lage, ihr Produkt zu installieren, weiß aber über technische Details so gut wie nichts. Auf Java basiert es offensichtlich nicht und folglich wird auch kein RMI verwendet. Aber bereits die Frage, welche Ports durch deren Software belegt werden war zu schwierig.

Meine Software besteht aus einem Client, der Auswertungen und Visualisierung von Daten vornimmt und einem Server, bei dem die Persistenz und Authetifizierung stattfindet. Das Ganze ist - technisch betrachtet - eigentlich nicht sonderlich komplex. Die Kommunikation läuft direkt über Sockets und die Clients benötigen lediglich die IP des Servers und den Port. Der Port muss ebenfalls fest am Server eingestellt werden - das ist alles. Falls die andere Software läuft gibt es eine java.net.BindException. Ich gebe in diesem Fall die folgende Meldung aus:

```
JOptionPane.showMessageDialog(null,
   "<html><b>Der angegebene Port ist nicht nutzbar</b>
   <br><br>Der von Ihnen ausgewählte Port ist nicht nutzbar.\n
   Wahrscheinlich ist der Port bereits von einer anderen Anwendung besetzt.\n
   Die Portnummer darf nicht kleiner als 1024 sein
   (darunter liegen die Systemports) und nicht größer 
   als 65535 sein (maximale Portanzahl)\nBitte geben 
   Sie einen nutzbaren Port an und starten Sie das Programm neu.\n",
   "Der angegebene Port ist nicht nutzbar", JOptionPane.ERROR_MESSAGE);
```


----------



## faetzminator (4. Mai 2009)

Schau mal mit Nmap ? Wikipedia oder einem anderen Portscanner nach, welche Ports belegt sind (sofern das Programm eine Socketverbindung ermöglicht). Ansonsten gibt es http://de.wikipedia.org/wiki/Netstat


----------



## Wolfgang Lenhard (4. Mai 2009)

Danke, das Programm muss ich mir merken. Das Problem ist, dass ich nicht an das Netzwerk herankomme. Eine Diagnose ist deshalb extrem schwierig.


----------



## sparrow (4. Mai 2009)

Soviel ich weiss kennt auch Windows den Befehl netstat.
Wenn dein Kunde auf seinem Server, wenn das andere Programm läuft, mal einen netstat absetzt könnte dir das sehr helfen.


```
c:\> netstat -a -n

Aktive Verbindungen

  Proto  Lokale Adresse         Remoteadresse          Status
  TCP    0.0.0.0:135            0.0.0.0:0              ABHÖREN
  TCP    0.0.0.0:445            0.0.0.0:0              ABHÖREN
  TCP    0.0.0.0:1050           0.0.0.0:0              ABHÖREN
  TCP    0.0.0.0:1097           0.0.0.0:0              ABHÖREN
  TCP    0.0.0.0:1112           0.0.0.0:0              ABHÖREN
  TCP    0.0.0.0:1775           0.0.0.0:0              ABHÖREN
  TCP    0.0.0.0:1778           0.0.0.0:0              ABHÖREN
  TCP    0.0.0.0:2592           0.0.0.0:0              ABHÖREN
  TCP    0.0.0.0:5800           0.0.0.0:0              ABHÖREN
  TCP    0.0.0.0:5900           0.0.0.0:0              ABHÖREN
  TCP    10.1.0.103:139         0.0.0.0:0              ABHÖREN
  TCP    10.1.0.103:139         10.1.0.151:1169        HERGESTELLT
  TCP    10.1.0.103:1112        10.1.0.1:1526          HERGESTELLT
  TCP    10.1.0.103:1272        0.0.0.0:0              ABHÖREN
  TCP    10.1.0.103:1272        10.1.0.1:139           HERGESTELLT
  TCP    10.1.0.103:1874        0.0.0.0:0              ABHÖREN
  TCP    10.1.0.103:2592        10.1.0.1:1526          HERGESTELLT
  TCP    127.0.0.1:1774         0.0.0.0:0              ABHÖREN
  TCP    127.0.0.1:1774         127.0.0.1:1775         HERGESTELLT
  TCP    127.0.0.1:1775         127.0.0.1:1774         HERGESTELLT
  TCP    127.0.0.1:1777         0.0.0.0:0              ABHÖREN
  TCP    127.0.0.1:1777         127.0.0.1:1778         HERGESTELLT
  TCP    127.0.0.1:1778         127.0.0.1:1777         HERGESTELLT
  TCP    127.0.0.1:2489         0.0.0.0:0              ABHÖREN
  TCP    127.0.0.1:5152         0.0.0.0:0              ABHÖREN
  TCP    127.0.0.1:5152         127.0.0.1:2588         SCHLIESSEN_WARTEN
  UDP    0.0.0.0:135            *:*                    
  UDP    0.0.0.0:445            *:*                    
  UDP    0.0.0.0:1048           *:*                    
  UDP    0.0.0.0:1049           *:*                    
  UDP    0.0.0.0:1063           *:*                    
  UDP    0.0.0.0:1064           *:*                    
  UDP    0.0.0.0:1667           *:*                    
  UDP    0.0.0.0:1668           *:*                    
  UDP    0.0.0.0:2446           *:*                    
  UDP    0.0.0.0:2447           *:*                    
  UDP    0.0.0.0:2682           *:*                    
  UDP    0.0.0.0:2683           *:*                    
  UDP    10.1.0.103:137         *:*                    
  UDP    10.1.0.103:138         *:*                    
  UDP    10.1.0.103:500         *:*
```

Das ein anderes Programm alle Ports blockiert halte ich für ausgeschlossen. Eigentlich gibt es nur eine Art von Programmen die das tun sollten: Firewalls. Die verhalten sich, gerade unter verschiedenen Systemen aus dem Hause Kleinweich, etwas seltsam.

Gruß
Sparrow


----------



## Wolfgang Lenhard (4. Mai 2009)

Danke! Das hilft mir sehr weiter.


----------

