Hallo,
ich bin totaler Newbie in Java und insbesondere auch beim Thema Netzwerk. Wir behandeln das Thema gerade in der Schule. Jetzt sollen wir einen “einfachen” Client programmieren, der sich bei einem Server anmeldet und daraufhin in unregelmäßigen Abständen Nachrichten übermittelt bekommt. Die Nachrichten sind unterschiedlich lang, als ANSI 1252 kodiert und werden mit 0x00 terminiert.
Der Client soll permanent die Verbindung halten. Sprich bei Verbindungsabbrüchen die Verbindung wieder herstellen. Um eine Verbindung herzustellen muss dieser HalloServer0x00 an den Server schicken. Danach schickt der Server mal mehr mal weniger Daten, die einfach auf der Konsole ausgegeben werden sollen.
Das ist derzeit mein Client:
void connect() throws IOException {
String ip = "192.168.1.1";
int port = 7009;
java.net.Socket socket = new java.net.Socket(ip,port); // verbindet sich mit Server
String zuSendendeNachricht = "Hello World".(byte)0;
PrintWriter printWriter =new PrintWriter(new OutputStreamWriter(socket.getOutputStream()));
printWriter.print(zuSendendeNachricht);
printWriter.flush();
BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(socket.getInputStream()));
char[] buffer = new char[200];
while (true)
int anzahlZeichen = bufferedReader.read(buffer, 0, 200);
String nachricht = new String(buffer, 0, anzahlZeichen);
System.out.println(nachricht);
}
}
Wenn ich es richtig verstehe muss ich die Nachricht als Byte abschicken. Wie konvertiere ich meine Nachricht in Bytes und sende diese dann ab? Und wie kann ich beim Empfangen prüfen ob ich eine Nachricht vollständig gelesen habe also bis 0x00 und woran erkenne ich wann die nächste kommt? Ich habe das lesen jetzt einfach in einer Schleife mit true, wie kann ich denn prüfen ob die Verbindung besteht? Gibt es sowas wie SocketConnectionOk?
Ihr merkt an den Fragen sicherlich das ich keinen Plan habe! Hoffe auf etwas Hilfe!
Vielen Dank und schönen abend!