S
SimonSocket
Gast
Hallo,
ich habe folgendes Ziel mit meinem Java-Programm:
1. Server & Client sollen per Socket(s) Daten austauschen, sprich: Server wird gestartet, wartet (listened) auf Daten vom Client
2. Client wird nach Server gestartet, teilt diesem mit der er nun da ist (ohne irgendwelche Daten zu schicken, soll dem Server nur mitteilen, dass er nun da ist und nun mit Server Daten austauschen kann... quasi einfach "Hallo" sagen)
3. Server schickt Daten an Client (in meinem Fall erstmal nur 2 Zahlen, die addiert werden sollen [12+10])
4. Client empfängt Daten vom Server, addiert die beiden Zahlen und gibt das Ergebnis zurück [12 + 10 = 22]
5. Server bekommt Ergebnis, gibt dies über Console aus und wartet anschließend auf neue Anfragen vom Client
Dazu habe ich jeweils folgenden Quellcode für Client und Server geschrieben:
Code Server:
------------
Code Client:
-----------
Nun habe ich folgendes Problem:
Es wird immer nur die erste Zahl über die Konsole ausgegeben (die 12), aber nicht das addierte Ergebnis (22). Außerdem scheint trotz flush() der Puffer nicht immer gelehrt zu werden, in einem ersten Versuch habe ich statt 12 als erste Zahl 5 genommen und manchmal kommt bei mir immer noch die 5 als Ausgabe in der Konsole.
Suche schon seit gut einer Stunde meinen Fehler im Quellcode, aber derzeit scheine ich etwas betriebsblind zu sein, zumindest haben mich alle meinen eigenen Lösungsversuche bisher leider nicht zum Ziel gebracht.
Würde mich sehr freuen, wenn mir jemand weiterhelfen kann! Vielen Dank im Voraus für eure Hilfe!
ich habe folgendes Ziel mit meinem Java-Programm:
1. Server & Client sollen per Socket(s) Daten austauschen, sprich: Server wird gestartet, wartet (listened) auf Daten vom Client
2. Client wird nach Server gestartet, teilt diesem mit der er nun da ist (ohne irgendwelche Daten zu schicken, soll dem Server nur mitteilen, dass er nun da ist und nun mit Server Daten austauschen kann... quasi einfach "Hallo" sagen)
3. Server schickt Daten an Client (in meinem Fall erstmal nur 2 Zahlen, die addiert werden sollen [12+10])
4. Client empfängt Daten vom Server, addiert die beiden Zahlen und gibt das Ergebnis zurück [12 + 10 = 22]
5. Server bekommt Ergebnis, gibt dies über Console aus und wartet anschließend auf neue Anfragen vom Client
Dazu habe ich jeweils folgenden Quellcode für Client und Server geschrieben:
Code Server:
------------
Java:
import java.net.*;
import java.io.*;
public class kleinerServer {
ServerSocket server = new ServerSocket (7583);
MiniServer () throws IOException {
while (true) {
Socket client = server.accept();
InputStream input = client.getInputStream();
OutputStream output = client.getOutputStream();
output.write ( 12 );
output.write ( 10 );
output.flush(); // alle Bytes im Puffer abschicken
System.out.println( input.read () );
input.close();
output.close();
server.close();
}
}
public static void main (String args[]) {
try {
kleinerServer server = new kleinerServer();
}
catch (IOException e)
{
System.out.println(e);
}
}
}
-----------
Java:
public class Client () throws IOException {
Socket server = new Socket ("localhost", 7583);
InputStream input = server.getInputStream();
OutputStream output = server.getOutputStream();
int zahl1 = input.read();
int zahl2 = input.read();
output.write (zahl1+zahl2);
output.flush();
input.close();
output.close();
}
public static void main (String args[]) {
try {
Client client = new Client();
}
catch (IOException e)
{
System.out.print(e);
}
}
Nun habe ich folgendes Problem:
Es wird immer nur die erste Zahl über die Konsole ausgegeben (die 12), aber nicht das addierte Ergebnis (22). Außerdem scheint trotz flush() der Puffer nicht immer gelehrt zu werden, in einem ersten Versuch habe ich statt 12 als erste Zahl 5 genommen und manchmal kommt bei mir immer noch die 5 als Ausgabe in der Konsole.
Suche schon seit gut einer Stunde meinen Fehler im Quellcode, aber derzeit scheine ich etwas betriebsblind zu sein, zumindest haben mich alle meinen eigenen Lösungsversuche bisher leider nicht zum Ziel gebracht.
Würde mich sehr freuen, wenn mir jemand weiterhelfen kann! Vielen Dank im Voraus für eure Hilfe!
Zuletzt bearbeitet von einem Moderator: