Impressum · Kontakt · Hilfe
Besucher online · Mitglieder



Portal > Foren > Java > Allgemeine Java-Programmierung > Strings senden und empfangen mit einem ClientSocket über TCP
Antwort
 
Themen-Optionen
Alt 25.11.2004, 16:45   Nach oben    #1
MJA
Gast
 
Beiträge: n/a
Standard Strings senden und empfangen mit einem ClientSocket über TCP

Hallo zusammen!

Ich hab ein Problem. Und zwar:
Mein Freund und ich programmieren die Steuerung eines Roboters übers Internet. Dazu haben wir ein Software-Modul, das direkt am Roboter sitzt und ein Software-Modul das aus dem Internet darauf zugreift. Das Modul am Roboter hat mein Freund in Visual Basic geschrieben, das Modul fürs Internet mache ich in Java. Ich habe schon einen ClientSocket geschrieben, mit dem ich mich auch connecten kann. Ich kann auch Befehle senden. Beim Senden gibt es allerdings ein Problem und Empfangen kann auch nicht richtig. Hier erstmal der Code:
Java Code:
  1. import java.awt.event.ActionListener;
  2. import java.io.BufferedReader;
  3. import java.io.IOException;
  4. import java.io.InputStreamReader;
  5. import java.io.PrintStream;
  6. import java.net.Socket;
  7.  
  8. class Com
  9. {
  10.     public static void communication(BufferedReader reader, BufferedReader in, PrintStream out, ActionListener al)
  11.     throws IOException
  12.     {
  13.         String command = reader.readLine();
  14.        
  15.         System.out.println(command);
  16.         out.println(command);
  17.        
  18.         String input = in.readLine();
  19.         System.out.println(input);
  20.     }
  21.  
  22.     public static void main(String args[])
  23.     {
  24.         try
  25.         {
  26.             Socket cs = new Socket(args.length == 0 ? "192.168.0.2" : args[0], 4003);
  27.             BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
  28.             BufferedReader in = new BufferedReader(new InputStreamReader(cs.getInputStream()));
  29.             PrintStream out = new PrintStream(cs.getOutputStream());
  30.             ActionListener al = null;
  31.            
  32.             communication(reader, in, out, al);
  33.         }
  34.         catch(IOException e)
  35.         {
  36.             System.err.println("Es ist ein Fehler aufgetreten. Das Programm wird nun beendet.");
  37.             return;
  38.         }
  39.     }
  40. }
Das Problem beim Senden besteht darin, dass das Programm offensichtlich nach dem Senden des Befehls noch einen leeren String hinterher schickt, was einen Fehler beim Visual Basic Programm erzeugt.
Das Empfangen funktioniert gar nicht. Zumindest nicht so wie es Sinn macht. Das Visual Basic Programm sendet jede Sekunde einen String an den Client, aber das ganze wird erst ausgegeben, wenn das Visual Basic Programm beendet wurde. Ich will die Ausgabe der InputStreams eigendlich mithilfe eines ActionListeners oder ähnliches machen, ich weiß aber nicht wie.
Ich hoffe mir kann jemand helfen! Danke.

MfG
Jan[/highlight]
 
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 27.11.2004, 10:08   Nach oben    #2
bluelight
Gast
 
Beiträge: n/a
Standard

sich programm kann man doch wahrscheinlich überprüfen, ob der String lehr ist und ihn dann ignorieren. Das ist leider alles wo i8ch dir helfen kann, ich verschieb dich mal in Netzwerkprogrammierung, vieleicht weiß da jemand eine antwort.
 
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 30.11.2004, 19:48   Nach oben    #3
robby
Gast
 
Beiträge: n/a
Standard

also ich nehme statt PrintStream lieber PrinWriter...

Sieht dann so aus bei mir

PrintWriter m_out = new PrintWriter(new OutputStreamWriter(socket.getOutputStream()));
m_out.println("hallo");
m_out.flush();


println erzeugt quasi den zu sendenen text und mit flush() wird dieser dann tatsächlich abgeschickt da der Stream geleert wird.

Es wird dann genau das gesendet was auch eingelesen wird..


dies kann man dann easy mit readLine von nem BufferedReader bekommen....
Aber ihr habt ja schon den Empfänger
 
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 10.11.2005, 18:48   Nach oben    #4
Neuer Benutzer
 
Registriert seit: 11.10.2005
Beiträge: 12
Standard

Probier mal mit
ObjectOutputStream und ObjectInputStream

z.B. für die Client Seite :

Socket client;
ObjectOutputStream outToServer;
ObjectInputStream inFromServer;

outToServer = new ObjectOutputStream(client.getOutputStream());
inFromServer = new ObjectInputStream(client.getInputStream());

...
String incomming;
try {
incomming = (String) inFromServer.readObject();
} catch (Exception exception) {

bzw.
try {
outToServer.writeObject("Bestätigung");
} catch (Exception exception) {}
Sputnik 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
socket empfangen + senden debian inside Allgemeine Java-Programmierung 0 03.04.2005 16:42


Alle Zeitangaben in WEZ +2. Es ist jetzt 01:46 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