Impressum · Kontakt · Hilfe
Besucher online · Mitglieder



Portal > Foren > Java > Allgemeine Java-Programmierung > Datenempfang vom Server
Antwort
 
Themen-Optionen
Alt 28.09.2005, 18:06   Nach oben    #1
diggy
Gast
 
Beiträge: n/a
Standard Datenempfang vom Server

Hallo Forum,
habe folgenden code zum Versenden von Daten von einem Server:
PHP-Code:
StringBuffer sb = new StringBuffer();
                
sb.append(activmodule.getServerModuleName());
                
sb.append("|");
                
sb.append(activmodule.getServerModuleStatus());
                
sb.append("|");
             
sb.append(activmodule.getServerModuleCurrentAction());
                
System.out.println(sb.toString());
                
oos.writeObject(sb.toString()); 
versuche einen Client zu erstellen der die Daten empfängt. Ich weiss , man muss die Klassen ObjectInputStream benutzen, nur richtig auslesen konnte ich sie bisher nicht. Wenn mich einer gedanklich mal anschupsen würde wäre ich sehr dankbar.
 
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 28.09.2005, 18:15   Nach oben    #2
Sesselkleber
 
Benutzerbild von sparrow
 
Registriert seit: 17.01.2005
Beiträge: 567
Standard

Hey, wo ist dein ServerSocket? *wunder*
Also, ich kann mal wieder das http://www.javabuch.de empfehlen.
Die HTML-Version runterladen und den Teil über Netzwerk und Sockets lesen.
Ist rechte einfach in Java.

Gruß
Sparrow
sparrow ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 28.09.2005, 19:06   Nach oben    #3
diggy
Gast
 
Beiträge: n/a
Standard

Hallo Sparrow

sag mal, du bist doch offensichtlich so etwas wie ein Forumwächter in diesem Forum
Spass...

zum Thema: bin relativ neu mit java. Arbeite zur Zeit an Projekten die ich nur teilweise erweitern darf in meiner Firma. Erstens ist es für mich ein recht mühsam mich in den "fremden" Code eunzuarbeiten. Dann kommt es dass man eigene Lösungen vollbringen muss. Also, dieses Projekt ist eigentlich recht gross um es hier beschreiben zu müssen, allerdings die Codeausschnitte kann man ja immer mal zur Frage stellen.
Der darunterstehende Code startet einen Server, der die Daten über seinen Status, anzahl der angemeldeten Clients usw. versendet. Ich weiss auch dass die besten Lösungen einfach sind allerdings nur wenn man weis wie man etwas lösen kann. So, falls ich dich nicht weiter belästige stelle ich mal die Klasse die den Server startet zur ansicht:
PHP-Code:
package mypackage;
import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.net.ServerSocket;
import java.net.Socket;
import java.util.Hashtable;
import de.evig.server.ServerModule;

public class 
Servercontroll {
    private final 
String PUSHSERVERMODUL "PushServer";
    private final 
String GATEWAYMODUL "Gateway";
    private 
Hashtable<String,ServerModulemodules;
    private 
boolean runListener true;

    public 
Servercontroll() {
        if (
modules == null modules = new Hashtable<String,ServerModule>();
        
init();
    }
    
    private 
void init(){
        new 
Listener().start();
        
modules.put(PUSHSERVERMODUL, new PushServer() ); // Pushserver erstellen     
        // Starten des Listener
        
modules.get(PUSHSERVERMODUL).start();            
    }
        
    class 
ClientHandler extends Thread{
        
        public 
boolean run true ;
        private 
Socket conn ;
        
        public 
ClientHandler(Socket conn){
            
this.conn conn;
        }
        public 
void start(){
            
setPriority(Thread.MIN_PRIORITY);
            
setName("Servercontroll ClientHandler");
            
setDaemon(true);
            
super.start();
        }
        
        private 
void sendeServerModuleStatus(ServerModule activmodule,ObjectOutputStream oos )
        
throws IOException{
            if ( 
activmodule != null){
                
StringBuffer sb = new StringBuffer();
                
sb.append(activmodule.getServerModuleName());
                
sb.append("|");
                
sb.append(activmodule.getServerModuleStatus());
                
sb.append("|");
             
sb.append(activmodule.getServerModuleCurrentAction());
                
System.out.println(sb.toString());
                
oos.writeObject(sb.toString());
            }
        }
        
        public 
void run(){
            try{
             
ObjectInputStream ois = new ObjectInputStream(this.conn.getInputStream());
             
ObjectOutputStream oos = new ObjectOutputStream(this.conn.getOutputStream());
                
ServerModule activmodule;
                
String clientaction;
                while(
run){
                    
activmodule null;
                 
clientaction = (String)ois.readObject();
                     
activmodule modules.get(clientaction);                 
                    
Thread.sleep(10); 
                    if ( 
activmodule != null)
                     
sendeServerModuleStatus(activmoduleoos);
                 else 
clientaction.equalsIgnoreCase("start_Sende");
                }
            }catch (
IOException ioe){
                
ioe.printStackTrace();
            }catch ( 
ClassNotFoundException cnfe){
                
cnfe.printStackTrace();
            }catch (
Exception e){
                
e.printStackTrace();
            }
        }
    }
    
    class 
Listener extends Thread{
        
        public 
void start(){
            
setPriority(Thread.MIN_PRIORITY);
            
setName("Servercontroll Listener");
            
setDaemon(false);
            
super.start();
        }
        
        public 
void run(){
            try{
                
ServerSocket listener = new ServerSocket(9100);
                while(
runListener)  {
                 new 
ClientHandler(listener.accept()).start();
                 
System.out.println("new Client");
                }
            } catch ( 
IOException e){
                
e.printStackTrace();
            }      
        }
    }
    public static 
void main(String[] args) {
      new 
Servercontroll();
    } 

Morgen muss ich eigentlic mit einer Lösung antanzen wie ich die Daten auslese. Hoffe das klappt bis dahin. Du kannst dir sicherlich vorstellen dass ich meinen bisherigen Client über den wir schon sprachen "erweitern" musste. Und zwar aus folgendem Grund: Selbst wenn der Client und Server sich anpingen können weiss ich natürlich immer noch nicht ob der Server seine arbeit verrichtet, spricht die Daten empfängt oder weiterleitet. Deswegen dieser Codeaufbau.
Also, falls du Langeweile haben solltest ist jeder Hilfeansatz willkommen...
voraus dankend...
 
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 28.09.2005, 19:32   Nach oben    #4
Sesselkleber
 
Benutzerbild von sparrow
 
Registriert seit: 17.01.2005
Beiträge: 567
Standard

Zitat:
Zitat von diggy
sag mal, du bist doch offensichtlich so etwas wie ein Forumwächter in diesem Forum
*energisch mit dem Kopf schüttel*
Wenn überhaupt, dann bin ich hier Putzfrau
Oder viel lieber Sesselkleber *rofl*

Zitat:
Zitat von diggy
zum Thema: bin relativ neu mit java. Arbeite zur Zeit an Projekten die ich nur teilweise erweitern darf in meiner Firma. Erstens ist es für mich ein recht mühsam mich in den "fremden" Code eunzuarbeiten. Dann kommt es dass man eigene Lösungen vollbringen muss. Also, dieses Projekt ist eigentlich recht gross um es hier beschreiben zu müssen, allerdings die Codeausschnitte kann man ja immer mal zur Frage stellen.
Jep, und hier sind auch ganz viele nette Putzfr.. Leute die dir helfen, das passt schon.


Ich hab nur deinen Post falsch vertanden, da ich keinen ServerSocket gesehen habe, dachte ich, dass du schon auf der Serverseite schwierigkeiten hast.



Moah, um ehrlich zu sein, habe ich bisher nur bytes per Stream über nen Port gejagd.
Aber ich sitze gerade an einem Projekt, wo das vielleicht zum Tragen kommt.
Gib mir mal ein paar Minuten, ich probier mal ein bisschen.
Um 20:15 haste ne Antwort

Gruß
Sparrow
sparrow ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 28.09.2005, 19:48   Nach oben    #5
diggy
Gast
 
Beiträge: n/a
Standard

Danke dir sparrow,

allerdings werde ich es erst morgen lesen können da ich jetzt weg muss bevor die Läden schliessen. Viele Dank und ich melde mich morgen hier...
schönen Abend
 
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 28.09.2005, 20:10   Nach oben    #6
Sesselkleber
 
Benutzerbild von sparrow
 
Registriert seit: 17.01.2005
Beiträge: 567
Standard

Und dabei war ich sogar schneller als gedacht *g*

Also eigentlich gibt dir dein geposteter Code schon die Antwort, denn in deinem Fall schickt der Client auch eine Anfrage, und die ist ebenfalls verpackt in ObjectStream.

Ich hab mal auf die schnelle, und ziemlich dirty zwei Klassen gebaut, die dir weiterhelfen sollten, einemal den Server, und einem den Client:

Allerdings habe ich darauf verzichtet dem Server irgendetwas zu schicken.
Die Vorgehensweise dafür ist ja genauso wie umgekehrt als der Server dem Client den String schickt.

Hier also der Server
PHP-Code:
import java.io.ObjectOutputStream;
import java.net.ServerSocket;
import java.net.Socket;

public class 
ServerTest {

    public static 
void main(String[] args) {
        try {
            
ServerSocket sersock = new ServerSocket(14000);
            
System.out.println("Bereit auf Verbindung zu antworten");
            while (
true) {
                
Socket socket sersock.accept();
                new 
Handler(socket).run();
                
System.out.println("New Client");
            }
        } catch (
Exception e) {
            
e.printStackTrace();
        }
    }

}

class 
Handler extends Thread {
    
    
Socket socket;
    
    public 
Handler(Socket socket) {
        
this.socket socket;
    }
    
    public 
void run() {
        try {
            
ObjectOutputStream oss = new ObjectOutputStream(socket.getOutputStream());
            
String outgoing "Hallo, dies ist ein String vom Server";
            
oss.writeObject(outgoing);
            
oss.close();
            
socket.close();
        } catch (
Exception e){
            
e.printStackTrace();
        }
    }
    


Und hier der Client, der nichts weiter macht als die Verbindung aufzubauen und den eingehenden Stream auszugeben:
PHP-Code:
import java.io.ObjectInputStream;
import java.net.Socket;

public class 
ClientTest {

    
    public static 
void main(String[] args) {
        try {
            
Socket socket = new Socket("localhost"14000);
            
ObjectInputStream ois = new ObjectInputStream(socket.getInputStream());
            
String eingang = (String) ois.readObject();
            
System.out.println("Vom Server gelesen: " eingang);
        } catch (
Exception e) {
            
e.printStackTrace();
        }
    }




Ich hoffe das hilft dir.

Gruß
Sparrow
sparrow ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Antwort

Lesezeichen


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 
Themen-Optionen

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist An.
Smileys sind An.
[IMG] Code ist An.
HTML-Code ist Aus.
Trackbacks are An
Pingbacks are An
Refbacks are Aus

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Welchen Application Server? la-finest Tools, Server, Betriebssysteme 4 15.02.2007 13:24
Apache kann nicht gestartet werden. Jan Tools, Server, Betriebssysteme 11 23.11.2006 09:26
Server - Client: Befehle und Identifizierung WarrenFaith Allgemeine Java-Programmierung 3 08.08.2006 20:09
MySQL 5.1 kommt in die Beta-Phase Ben Nachrichten 1 02.03.2006 14:31
fehler am server oder fehler am script vodan PHP-Programmierung 26 23.05.2005 00:28


Alle Zeitangaben in WEZ +2. Es ist jetzt 19:14 Uhr.

Nach oben
Wir nutzen das Zend Framework, vBulletin (vBulletin v3.7.3, Copyright ©2000-2008, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0) und vBSEO.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44