Ich muss Nachrichten (Anfragen vom Benutzer an die Engine und Antworten von der Engine an den Benutzer) über einen Socket senden. Also ist der Fluss im Wesentlichen
%Vor%Jetzt macht es nur Sinn, das Rad hier nicht neu zu erfinden. Ich beschäftige mich mit Java auf beiden Seiten, also plane ich Objekte wie folgt zu verwenden:
%Vor%Was ich nicht verstehe, ist, wie ich in meinen Server- und Client-Sockets weiß, welche Unterklasse von Request and Response hereinkommt? Ich sehe eine Situation wie
%Vor%Mein erster Gedanke war, einfach alles über Strings zu übergeben, aber das schien etwas albern, wenn Java Serialisierung bietet. Aber wie stelle ich sicher, dass ich weiß, welcher Kurs über den Draht kam? Muss ich das wissen, solange ich nur die Benutzer UserRequest an den Server und EngineResponse an den Client sende?
Damit Ihr Protokoll mit einfacher Serialisierung verwendet werden kann, müssen alle zu sendenden Klassen auf beiden Seiten der Verbindung verfügbar sein.
Und Ihre engineCallback()
-Methode wird auf dem Server ausgeführt werden, nicht ein echter Rückruf an den Client sein.
Wenn Sie mehr wollen (wie Methoden auf der anderen Seite aufrufen und Klassen übergeben, die auf der anderen Seite noch nicht verfügbar sind), sollten Sie sich RMI (Remote Method Invocation) ansehen. Es basiert auf der Java-Serialisierung für das Protokoll, fügt jedoch Methodenaufrufe hinzu und ermöglicht die Weitergabe unbekannter Klassen an die andere Seite, die dort ausgeführt werden soll.
Tags und Links java serialization