# Einbinden eines java-servers



## oache (21. Apr 2005)

Hallo

ich kenne mich mit Client-Server noch nicht so gut aus, deshalb mag mein Frage etwas banal klingen:
ich habe folgenden Code:



```
import java.io.*; 
import java.net.*; 

class DateiTransferServer { 

    ObjectOutputStream ausgang; 
   ObjectInputStream eingang; 

   public void runServer() { 

        ServerSocket serverSocket; 
        Socket verbindungsSocket; 

      try { 

         serverSocket = new ServerSocket( 2000 , 100 ); 

         while ( true ) { 

            System.out.println( "Warte auf Verbindung ..." ); 
            verbindungsSocket = serverSocket.accept(); 

            System.out.println( "Verbindung mit " + 
               verbindungsSocket.getInetAddress().getHostName() ); 

            ausgang = new ObjectOutputStream( 
                        verbindungsSocket.getOutputStream() ); 
            ausgang.flush(); 

            eingang = new ObjectInputStream( 
                        verbindungsSocket.getInputStream() ); 

            System.out.println( "Empfange Daten ...." ); 

/* 
            do { 


               try { 

                  // Hier soll die Datei geschrieben werden, 
                  // die vom Client empfangen wird (test.tst) !! 

               } 
               catch ( ClassNotFoundException cnfex ) { 
                  System.out.println("Unbekannter Objekttyp !"); 
               } 

            } while (  /* !Abbruchbedingung */ ); 

*/ 


            // Verbindung beenden 
            System.out.println( "Verbindung wird unterbrochen ..." ); 
            ausgang.close(); 
            eingang.close(); 
            verbindungsSocket.close(); 
            System.out.println( "BEENDET !" ); 
         } 
      } 
      catch ( EOFException eof ) { 
         System.out.println( "Client hat die Verbindung unterbrochen !" ); 
      } 
      catch ( IOException io ) { 
         System.out.println( "IO Fehler !" ); 
         io.printStackTrace(); 
      } 
   } 


   public static void main(String[] args) { 

      DateiTransferServer app = new DateiTransferServer(); 
      app.runServer(); 
   } 

}
```

Wie muss ich nun vorgehen um hieraus einen lauffähigen server zu erstellen an den ich Anfragen
senden kann?
Brauche ich dazu einen Apache-Webserver?

Viele Grüße
oache


----------



## Grizzly (21. Apr 2005)

Hab' mir erlaubt Deinen Post zu editieren und den zweiten BBCode-Tag Code zu entfernen und denn anderen zu schließen damit das ganze etwas lesbarer wird.

Einen Apache Webserver brauchst Du nicht. Wenn, dann eher einen Tomcat Server. Aber für Dein Programm ist das eigentlich nicht nötig. So, wie es da steht, sollte es eigentlich funktionieren.


----------



## oache (21. Apr 2005)

> So, wie es da steht, sollte es eigentlich funktionieren.



genau das ist meine Frage: wie geht das? Einfach in der Konsole starten?
und für was ist dann ein Apache Webserver und Tomcat gedacht?


----------



## Grizzly (21. Apr 2005)

oache hat gesagt.:
			
		

> > So, wie es da steht, sollte es eigentlich funktionieren.
> 
> 
> 
> ...


Jepp, einfach in der Konsole starten. Sollte dann eigentlich funktionieren.

Ein Apache Server bietet Dateien - meist Webseiten - und über Module Sonderfunktionen (bspw. PHP) an. Der Tomcat Server ist ein Server für Java Servlets sowie Java Server Pages (JSP). Dieser bietet zwar auch Dateien an, der Schwerpunkt liegt aber auf dynamischen Webseiten, die mit Java-Klassen erstellt werden.


----------



## oache (21. Apr 2005)

das heisst mit dem Server oben kann ich eine Datei an diesen Server schicken und der diese dann speichert?
kann dieser Server auch Dateien zum Download bereitstellen?


----------



## Grizzly (21. Apr 2005)

oache hat gesagt.:
			
		

> das heisst mit dem Server oben kann ich eine Datei an diesen Server schicken und der diese dann speichert?
> kann dieser Server auch Dateien zum Download bereitstellen?


Der Server kann prinizipiell alles - wenn Du es rein programmierst.


----------



## oache (21. Apr 2005)

was müsste man denn oben abwandeln wenn man vom server eine datei herunterladen kann?

public void sendFile(){
.
.
.
}


----------



## Grizzly (21. Apr 2005)

Das erste Problem dürfte mal sein, dass in Deinem Beispiel Object Streams verwendet werden, also nur Objekte versendet werden können. Das solltest Du dann vielleicht umstellen.

Hast Du den Code eigentlich selber geschrieben oder irgendwo her kopiert? ???:L Ich würde Dir auf jeden Fall Java ist auch eine Insel - Kapitel 16 Netzwerkprogrammierung empfehlen durchzulesen.  Weil abwandeln kannst Du aus dem Code nix, da da ja momentan noch die Hälfte fehlt: Nämlich das versenden der Datei an sich. Momentan wird nur eine Verbindung auf- und abgebaut. 

Außerdem weiss ich auch nicht, wie tief Deine Java Kenntnisse sind. Bist Du eine Java Einstieger oder hast Du Dich bisher nur nicht mit Netzwerkprogrammierung außeinandergesetzt? Das würde echt helfen, da ich sonst nicht weiss, wo ich bzw. wir hier im Forum ansetzen können.


----------



## oache (21. Apr 2005)

du hast recht ich habe den code aus dem forum kopiert, weil der eintrag eigentlich genau das darstellt
was ich implementieren will. Ein java-einsteiger bin ich nicht, aber auch nicht der super profi. ich habe 
bisher eben noch nichts in sachen netzwerkprogrammierung gemacht. bin eher auf dem gebiet j2me tätig.
wäre super wenn du mir dabei helfen könntest.


----------



## Grizzly (21. Apr 2005)

Kein Problem. 

J2ME? :shock: Auch nicht schlecht. Da dürften die Anforderungen für Performance relativ hoch sein. Und auch auf die Größe muss man acht geben. 

Ich würde Dir empfehlen, einfach Dir mal den Link anzuschauen. Da ist alles eigentlich recht gut beschrieben. Falls Du noch weitere Fragen hast oder etwas nicht verstehst: Einfach melden.


----------

