Hallo =)
Ich bin gerade dabei ein bisschen mit Java, MySQL und eine Socketverbindung ein bisschen herumzufummeln.
Generell hätte ich die Frage was ich dabei beachten muss.
Habe bereits schon eine art Server sowie Client erstellt was auch funktioniert.
Habe jezt noch ein bissl den Quelltext erweitert.
Der Server besizt nun eine MySQL Verbindung, beide Seiten sollen via "Strings" bzw "selbstgebasteltem Protokoll "kommunizieren".
Hier haben wir mal ein Beispiel:
Der Client verbindet sich auf dem Server und sendet folgende Line:
l\0Test\0Test
(Habe hierraus eine art "Login" gebastelt)
l\0Benutzername\0Passwort
Diese 3 "Parameter" im String sind relevant.
Das erste Zeichen (kleines L) bezeichnet diesen String als "Login-String" mit beigefügtem Benutzernamen und Passwort.
Der Server verarbeitet diesen String weiter (Prüft die dort beigefügten benutzerdaten, die in einer MySQL DB gespeichert sind) und gibt darauf eine Antwort:
l\0Test\0true
oder
l\0Test\0false
Hier gibt der Server an den Clienten den "Login-String" zurück und sagt das dieser Benutzer entweder angemeldet wurde (true) oder die daten nicht stimmen (false)
So. Funktionieren tut alles einwandfrei (Vielleicht kann man dies ja noch etwas verbessern)
Jezt tritt aber ein kleines problem auf, wo ich noch nicht so recht weiter weiß:
Nachdem der "Login-Token" versendet bzw Empfangen wurde, soll ein weiterer String versendet & empfangen werden ...
Habe hierbei das Gleiche verfahren angewendet, was aber nicht funktioniert. er gibt immernoch den "Login-Token" aus.
Jezt wäre hier meine erste Frage wichtig "Was muss ich bei Socket-Verbindungen beachten?".
Mittels output.println(String); bzw input.println(String); Sende bzw emfange ich die einzelnen Strings, die vom Clienten bzw Server Versendet wurden.
Was mache ich, wenn bereits einmal schon empfangen bzw versendet wurde?
Muss ich noch ein \n für "Neue Zeile" dranhängen (beim versenden)? Oder muss ich das in eine art "Buffer" bzw "cache" alles abfragen?
Oder muss ich da irgendetwas "zurücksetzen"? (Kann ja sein, das der Server sagt "So, ich habe was empfangen, um was neues zu empfangen muss ich das alte weglegen".
Ich bin gerade dabei ein bisschen mit Java, MySQL und eine Socketverbindung ein bisschen herumzufummeln.
Generell hätte ich die Frage was ich dabei beachten muss.
Habe bereits schon eine art Server sowie Client erstellt was auch funktioniert.
Habe jezt noch ein bissl den Quelltext erweitert.
Der Server besizt nun eine MySQL Verbindung, beide Seiten sollen via "Strings" bzw "selbstgebasteltem Protokoll "kommunizieren".
Hier haben wir mal ein Beispiel:
Der Client verbindet sich auf dem Server und sendet folgende Line:
l\0Test\0Test
(Habe hierraus eine art "Login" gebastelt)
l\0Benutzername\0Passwort
Diese 3 "Parameter" im String sind relevant.
Das erste Zeichen (kleines L) bezeichnet diesen String als "Login-String" mit beigefügtem Benutzernamen und Passwort.
Der Server verarbeitet diesen String weiter (Prüft die dort beigefügten benutzerdaten, die in einer MySQL DB gespeichert sind) und gibt darauf eine Antwort:
l\0Test\0true
oder
l\0Test\0false
Hier gibt der Server an den Clienten den "Login-String" zurück und sagt das dieser Benutzer entweder angemeldet wurde (true) oder die daten nicht stimmen (false)
So. Funktionieren tut alles einwandfrei (Vielleicht kann man dies ja noch etwas verbessern)
Jezt tritt aber ein kleines problem auf, wo ich noch nicht so recht weiter weiß:
Nachdem der "Login-Token" versendet bzw Empfangen wurde, soll ein weiterer String versendet & empfangen werden ...
Habe hierbei das Gleiche verfahren angewendet, was aber nicht funktioniert. er gibt immernoch den "Login-Token" aus.
Jezt wäre hier meine erste Frage wichtig "Was muss ich bei Socket-Verbindungen beachten?".
Mittels output.println(String); bzw input.println(String); Sende bzw emfange ich die einzelnen Strings, die vom Clienten bzw Server Versendet wurden.
Was mache ich, wenn bereits einmal schon empfangen bzw versendet wurde?
Muss ich noch ein \n für "Neue Zeile" dranhängen (beim versenden)? Oder muss ich das in eine art "Buffer" bzw "cache" alles abfragen?
Oder muss ich da irgendetwas "zurücksetzen"? (Kann ja sein, das der Server sagt "So, ich habe was empfangen, um was neues zu empfangen muss ich das alte weglegen".