Forum: PC-Programmierung Java - Socket funktioniert nicht


von Fritz B. (Gast)


Lesenswert?

Hi zusammen,

ich habe ein Problem. Mein Programm soll mit einem Server kommunizieren, 
wobei eine Anfrage an den Server geschickt wird, dieser antwortet und 
die Antwort an "meine" Client-Software zurückschickt.

Hier der Code:
1
Socket socket = new Socket(IP_Address,Port);
2
        
3
        OutputStream _output = socket.getOutputStream();
4
        PrintStream ps = new PrintStream(_output,true);
5
        
6
        
7
        ps.println("Frage?");  
8
        ps.flush();
9
        
10
      
11
      
12
        InputStream _input = socket.getInputStream();
13
        System.out.println("Antwort:  "+_input.toString());
14
        
15
        BufferedReader buff = new BufferedReader(new InputStreamReader(socket.getInputStream()));
16
        String answer = buff.readLine();
17
        System.out.println(answer);
18
        System.out.println("verf\u00FCgbare Bytes: " + _input.available());
19
        System.out.println(_input.toString());

Es kommt leider nichts bei meinem Programm an.
Auch scheint die Software nicht den String "Frage?" an den Server zu 
schicken.


Was mache ich falsch?!


Vielen Dank!

von Chris (Gast)


Lesenswert?

Hallo,

wenn zur Laufzeit keine Exception geworfen wird, dann würde ich 
Wireshark auf dem Client zum Einsatz bringen. Filter dort ggf. nach 
IP_Address und/oder Port. So kannst Du relativ schnell sicher stellen, 
ob tatsächlich nichts gesendet wurde.

VG, Chris

von Läubi .. (laeubi) Benutzerseite


Lesenswert?

Strukturiere erst mal deinen Code und entferne die unnötigen 
BuffereReader, PrintStream und zweifelhaften Ausgaben.

Auch wäre es sicher nicht verkehrt zu wissen welche Gegenstelle du 
ansprechen willst und einen vollständigen COmpilierbaren Code zu 
präsentieren.

Für mich sieht das ziemlich nach ohne Nachzudenken zusammenkopiert aus. 
Und wenn "der Server" dann noch ein HTTP Server z.B. ist geht das senden 
soc ganz sicher nicht.

von Der Andere (Gast)


Lesenswert?

Fritz B. schrieb:
> Auch scheint die Software nicht den String "Frage?" an den Server zu
> schicken.

Woher weisst du das?

Fritz B. schrieb:
> Es kommt leider nichts bei meinem Programm an.

Woher weisst du das?

In der Doku für BufferedReadre.readln() steht:
"Reads a line of text. A line is considered to be terminated by any one 
of a line feed ('\n'), a carriage return ('\r'), or a carriage return 
followed immediately by a linefeed.

Returns:
    A String containing the contents of the line, not including any 
line-termination characters, or null if the end of the stream has been 
reached"

Kommt also null zurück, oder hängt das Programm weil es auf ein 
Zeilenende wartet, das der Server nicht schickt.

Wie sieht der Server aus. Zu einer Kommunikation gehören immer zwei, und 
wenn der eine deutsch redet, und der zweite irokesisch, dann verstehen 
sie sich nicht.

von Der Andere (Gast)


Lesenswert?

Der Andere schrieb:
> BufferedReadre.readln()

Sorry sollte natürlich heissen: BufferedReader.readLine()

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.