java-forum.org
JBoss Seam
Alter Preis: 39,95 €
Jetzt: 0,00 €

zzgl. Versandkosten

Zurück   java-forum.org > Java - Programmierung > Netzwerkprogrammierung

Netzwerkprogrammierung Fragen zu Client-/Server-Programmierung sowie zu verteilten Anwendungen (RMI, CORBA etc.)

Antwort     Ist dieses Thema erledigt?
Themen-Optionen Thema durchsuchen Ansicht
Alt 25.02.2010, 15:40   #1 (permalink)
Neuer Benutzer
Bit
 
Registriert seit: 03.09.2009
Beiträge: 7
Abgegebene Danke: 0
Erhielt 0 Danke für 0 Beiträge
Standard Java-Server mit C++-Client

Hallo zusammen,
jetzt brauche ich doch mal aktiv eure Hilfe.
Viele viele Tipps konnte ich mir schon in diesem Forum zusammen suchen.
Aber jetzt bei diesem Problem komme ich einfach nicht weiter!

Ich habe einen festvorgegebenen C++-Client, der String verschickt und empfängt.
Diese möchte ich mit Java empfangen, bearbeiten und eine Antwort zurück schicken.

Die erste Client-Anfrage kommt an, wird empfangen, verstanden, bearbeitet und eine Antwort verschickt.
Aber keine zweite und erstrecht keine dritte...

Hier mein ServerCode (mit vielen Hilfsvariablen zur Ablaufkontrolle):

Java Code: Quelltext in neuem Fenster öffnen
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
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
MiniServer() throws IOException{
        //Variablen Werte zuweisen
        aufrufzaehler = 0;
        messageProperties = new Properties();
        dateipfad = System.getProperty("user.dir")+"\\converterProperties.properties";      
        try{
            inputStreamMessage = new FileInputStream(dateipfad);
            messageProperties.load(inputStreamMessage);
            inputStreamMessage.close();
            SIP2ServerPort = Integer.valueOf(messageProperties.getProperty("ServerPort")).intValue();               
                server = new ServerSocket(4712);
                new JOptionPane();
                JOptionPane.showMessageDialog(null, (new StringBuilder("MiniConverter läuft!")));
               while(true){
                clientSocket = server.accept();
                //clientInputBuffer = new BufferedReader(new InputStreamReader(clientSocket.getInputStream()));
                streamFromClient = clientSocket.getInputStream();
                System.out.println("Converter: input erzeugt");
                //outputToClient = new BufferedWriter(new OutputStreamWriter(clientSocket.getOutputStream()));
                outputToClient = clientSocket.getOutputStream();
                System.out.println("Converter: output erzeugt");
                //incomingRequestString = clientInputBuffer.readLine();
                byte[] b = new byte[100];
                streamFromClient.read(b);
                
                incomingRequestString = new String(b);
                System.out.println("requeststring am Converter: "+incomingRequestString);
                /**
                 * hier kommt jetzt die Unterscheidung, welche request eingegangen ist
                 */
                System.out.println(aufrufzaehler);
                aufrufzaehler++;
                if(incomingRequestString.startsWith("93")){
                    analyseRequest93();                 
                    createResponse94();
                }
                else if(incomingRequestString.startsWith("99")){
                    analyseRequest99();
                    createResponse98();
                }
                else if(incomingRequestString.startsWith("23")){
                    analyseRequest23();
                    createResponse24();
                }
                else if(incomingRequestString.startsWith("17")){
                    analyseRequest17();
                    createResponse18();
                }
                else if(incomingRequestString.startsWith("11")){
                    analyseRequest11();
                    createResponse12();
                }
                else if(incomingRequestString.startsWith("09")){
                    analyseRequest09();
                    createResponse10();
                }
                else{
                    responseString = "diese Anfrage kann nicht beantwortet werden";
                }
                System.out.println("responseString am Converter: "+responseString);
                //SIP2-Antwort ausgeben (von diesem Server an den Client zurück)
                outputToClient.write(responseString.getBytes());
                System.out.println("Converter hat Response verschickt");
                //outputToClient.flush();//alle gepufferten Bytes abschicken
                //clientInputBuffer.reset();//Eingabestrom schließen
                outputToClient.close();//Ausgabestrom schließen
           }
            
        }
        catch(IOException e){
            System.out.println("die Propertydatei konnte leider nicht geöffnet werden");
            System.out.println(e);
        }
            
        
    }


Ich hänge da total fest und bin nun nach langer, langer Zeit wohl auch total betriebsblind.
Könnt ihr mir bitte helfen?
Irgendwie muss das doch gehen, hoffe ich jedenfalls.

Gruß und Danke
Rolff
Rolff ist offline  
Bei Google nach dem markiertem Wort suchen Bei Wikipedia nach dem markiertem Wort suchen Im Forum nach dem markiertem Wort suchen
Mit Zitat antworten
Alt 25.02.2010, 16:05   #2 (permalink)
Stammbenutzer
Megabyte
 
Registriert seit: 19.01.2007
Beiträge: 1.606
Abgegebene Danke: 1
Erhielt 37 Danke für 37 Beiträge
Hat denn der Betriebsblinde schon mal nen Debugger angeworfen oder ist das Logging schlüssig?
__________________
Grüße,

++++++++++
[
>+++++++>++++++++++>+++>+<<<<-
]
>.
-----.
>++++++++++++++.
++.

So funktioniert das mit Foren/Newsgroups/Mailing Lists etc.:
smart-questions_de
FArt ist offline  
Bei Google nach dem markiertem Wort suchen Bei Wikipedia nach dem markiertem Wort suchen Im Forum nach dem markiertem Wort suchen
Mit Zitat antworten
Alt 25.02.2010, 16:12   #3 (permalink)
Stammbenutzer
Kilobyte
 
Registriert seit: 08.12.2006
Beiträge: 583
Abgegebene Danke: 0
Erhielt 70 Danke für 68 Beiträge
Hmm, je nachdem was du da vorhast würde ich das ganze ein bisschen besser strukturieren, zB. den einkommenden Request String mit einem Dispatcher an den richtigen Handler weiter geben etc...

Schau dir mal diese Seite an, die fand ich sehr hilfreich:
Architecture of a Highly Scalable NIO-Based Server | Java.net
__________________
Hi, my name is not Lance and i'm not an addict!
fassy ist offline  
Bei Google nach dem markiertem Wort suchen Bei Wikipedia nach dem markiertem Wort suchen Im Forum nach dem markiertem Wort suchen
Mit Zitat antworten
Alt 25.02.2010, 16:13   #4 (permalink)
Neuer Benutzer
Bit
Themenstarter
 
Registriert seit: 03.09.2009
Beiträge: 7
Abgegebene Danke: 0
Erhielt 0 Danke für 0 Beiträge
Hat er.
Erstelle das Ganze mit Eclipse, da taucht kein Fehler auf.
Es bleibt einfach mit der Consolenausgabe: 'Converter hat Response verschickt' stehen/hängen und reagiert auf keine weitere Clientanfrage.
Läuft aber weiter.

Gruß
Rolff
Rolff ist offline  
Bei Google nach dem markiertem Wort suchen Bei Wikipedia nach dem markiertem Wort suchen Im Forum nach dem markiertem Wort suchen
Mit Zitat antworten
Alt 25.02.2010, 16:20   #5 (permalink)
Inkognito
 
Benutzerbild von rambozola
 
Registriert seit: 05.01.2005
Beiträge: 107
Abgegebene Danke: 0
Erhielt 0 Danke für 0 Beiträge
Ja warum sollte er auch, du liest ja auch nur ein einziges Mal aus, und nach der Antwort schließt du die Verbindung wieder :? :?
Vielleicht hilft dieses Anfängertutorial weiter: Netzwerkgrundlagen - ServerSocket und Socket
rambozola ist offline  
Bei Google nach dem markiertem Wort suchen Bei Wikipedia nach dem markiertem Wort suchen Im Forum nach dem markiertem Wort suchen
Mit Zitat antworten
Alt 25.02.2010, 16:29   #6 (permalink)
Neuer Benutzer
Bit
Themenstarter
 
Registriert seit: 03.09.2009
Beiträge: 7
Abgegebene Danke: 0
Erhielt 0 Danke für 0 Beiträge
Es funktioniert auch nicht, wenn ich die Verbindung offen lasse.
Aber danke euch beiden!
Habe schon einiges über ServerSocket-Socket-Verbindugen gelesen, aber anscheinend wohl nicht richtig, sonst hätte ich ja dieses simple Thema einfach mal so aus dem Ärmel schüttel können.
Werde also weiterlesen und weiterversuchen.

Ich weiß ja nicht, ob bei C++ einen Verbindung wie bei Java nach dem Senden eines Streams geschlossen wird oder nicht.

Also Dankeschön für die Hinweise, werde ihnen ausgiebigst nachgehen.


Gruß
Rolff
Rolff ist offline  
Bei Google nach dem markiertem Wort suchen Bei Wikipedia nach dem markiertem Wort suchen Im Forum nach dem markiertem Wort suchen
Mit Zitat antworten
Alt 25.02.2010, 17:13   #7 (permalink)
Stammbenutzer
Kilobyte
 
Registriert seit: 08.12.2006
Beiträge: 583
Abgegebene Danke: 0
Erhielt 70 Danke für 68 Beiträge
Zitat: Rolff
Beitrag anzeigen
Ich weiß ja nicht, ob bei C++ einen Verbindung wie bei Java nach dem Senden eines Streams geschlossen wird oder nicht.
Das hat mit C, C++ oder Java nichts zu tun. Kommt immer drauf an wie der Client programmiert ist.
__________________
Hi, my name is not Lance and i'm not an addict!
fassy ist offline  
Bei Google nach dem markiertem Wort suchen Bei Wikipedia nach dem markiertem Wort suchen Im Forum nach dem markiertem Wort suchen
Mit Zitat antworten
Alt 25.02.2010, 17:58   #8 (permalink)
Neuer Benutzer
Bit
Themenstarter
 
Registriert seit: 03.09.2009
Beiträge: 7
Abgegebene Danke: 0
Erhielt 0 Danke für 0 Beiträge
Hab es jetzt hinbekommen!
Die Frage hier war wohl ein Initialzündung oder Vergleichbares

'clientSocket = server.accept();' hab ich aus der Schleife entfernt, das 'outputToClient.flush();' wieder reaktiviert und ein 'outputToClient.newLine();' hinzugefügt.
Ausserdem alles wieder mit den BufferedReadern und BufferedWritern umgesetzt und siehe da, es funktioniert!

Ausschlaggebend war 'rambozola' mit seinem Hinweis, dass mein Programm nur ein einziges Mal liest, und nicht mehr.

Was lange, wirklich sehr lange dauert wird auch manchmal gut

Dank an fassy und rambozola!

Gruß
Rolff
Rolff ist offline  
Bei Google nach dem markiertem Wort suchen Bei Wikipedia nach dem markiertem Wort suchen Im Forum nach dem markiertem Wort suchen
Mit Zitat antworten
Alt 26.02.2010, 09:21   #9 (permalink)
Stammbenutzer
Megabyte
 
Registriert seit: 19.01.2007
Beiträge: 1.606
Abgegebene Danke: 1
Erhielt 37 Danke für 37 Beiträge
Zitat:
Ausschlaggebend war 'rambozola' mit seinem Hinweis, dass mein Programm nur ein einziges Mal liest, und nicht mehr.
Das war nicht so schwer zu sehen, hätte dir aber beim Debugging bzw. Logfile lesen auffallen müssen...
__________________
Grüße,

++++++++++
[
>+++++++>++++++++++>+++>+<<<<-
]
>.
-----.
>++++++++++++++.
++.

So funktioniert das mit Foren/Newsgroups/Mailing Lists etc.:
smart-questions_de
FArt ist offline  
Bei Google nach dem markiertem Wort suchen Bei Wikipedia nach dem markiertem Wort suchen Im Forum nach dem markiertem Wort suchen
Mit Zitat antworten
Alt 02.03.2010, 10:10   #10 (permalink)
Neuer Benutzer
Bit
Themenstarter
 
Registriert seit: 03.09.2009
Beiträge: 7
Abgegebene Danke: 0
Erhielt 0 Danke für 0 Beiträge
Ja, hätte auffallen müssen.
Und eingentlich hätte ich das auch so komplett allein hinbekommen müsssen.
Nur, wenn jeder alles könnte, wäre in diesem Forum auch nicht grade viel los.
Also mal angenommen, jeder würde seine Java-Probleme selbst gelöst bekommen, oder es würden erst überhaupt gar keine auftreten...
Du siehst: sehr viele Konjuktive

Danke an alle

Grüße,
Rolff ist offline  
Bei Google nach dem markiertem Wort suchen Bei Wikipedia nach dem markiertem Wort suchen Im Forum nach dem markiertem Wort suchen
Mit Zitat antworten
Alt 02.03.2010, 11:49   #11 (permalink)
Stammbenutzer
Megabyte
 
Registriert seit: 19.01.2007
Beiträge: 1.606
Abgegebene Danke: 1
Erhielt 37 Danke für 37 Beiträge
Zitat:
Nur, wenn jeder alles könnte, wäre in diesem Forum auch nicht grade viel los.
Qualität vor Quantität.

Vielen Postings sieht man an, dass der Threadstarter sich nicht viel Mühe gemacht hat. Wenn man versucht das Problem zu isolieren oder ihm schon mal konkret nachgeht, haben sich viele Probleme tatsächlich in Luft aufgelöst und landen gar nicht erst hier. Ansonsten hat man eine wesentliche bessere Diskussionsgrundlage geschaffen.

Die Reihenfolge: denken, loggen, debuggen, googeln (Forensuche), posten... so wäre es m.E. sinnvoll, wobei keiner der Schritte optional ist.
__________________
Grüße,

++++++++++
[
>+++++++>++++++++++>+++>+<<<<-
]
>.
-----.
>++++++++++++++.
++.

So funktioniert das mit Foren/Newsgroups/Mailing Lists etc.:
smart-questions_de
FArt ist offline  
Bei Google nach dem markiertem Wort suchen Bei Wikipedia nach dem markiertem Wort suchen Im Forum nach dem markiertem Wort suchen
Mit Zitat antworten
Alt 02.03.2010, 11:51   #12 (permalink)
Java-Forum Team
IRC-Operator (Java-Chat)
Moderator
 
Benutzerbild von Noctarius
 
Registriert seit: 17.08.2007
Beiträge: 4.201
Abgegebene Danke: 4
Erhielt 175 Danke für 169 Beiträge
Als kleinen Zusatz, schon mal überlegt den Datentransfer nicht selbst zu machen, sondern auf fertige Implementierungen zurück zugreifen?
Noctarius ist offline  
Bei Google nach dem markiertem Wort suchen Bei Wikipedia nach dem markiertem Wort suchen Im Forum nach dem markiertem Wort suchen
Mit Zitat antworten
Antwort     Ist dieses Thema erledigt?

Lesezeichen

Latex Maths & Physics Editor ...

Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

Forumregeln
Es ist Ihnen erlaubt, neue Themen zu verfassen.
Es ist Ihnen 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 aus
Pingbacks are aus
Refbacks are aus


Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
(Socket) Datei von Client zum Server übertragen --> Weiterleitung an Clients Prengepower Netzwerkprogrammierung 16 03.12.2009 12:51
Java Server und C++ Client sollen über Corba kommunizieren onkelv Netzwerkprogrammierung 0 19.06.2009 15:07
Server - Client - Fehler? raven Netzwerkprogrammierung 3 24.11.2008 14:58
Echo Server + Client rd3an Netzwerkprogrammierung 5 30.10.2008 11:19
NIO:channel.close() auf Client scheinbar vom Server ignorier LarsbrauchtHilfe Netzwerkprogrammierung 3 17.01.2006 16:12


Alle Zeitangaben in WEZ +2. Es ist jetzt 20:45 Uhr.


Powered by vBulletin® Version 3.8.6 (Deutsch)
Copyright ©2000 - 2010, Jelsoft Enterprises Ltd.
Search Engine Friendly URLs by vBSEO 3.3.2
Thanks for Smilies by smilies.4-user.de