Nachrichten-Polling?

Status
Nicht offen für weitere Antworten.

Beren77

Mitglied
Hallo,

ich schreibe gerade an einem Schachspiel und möchte da auch Netzwerkfähigkeit anbieten: Zwei Spieler sollen gegeneinander an verschiedenen Rechnern spielen können.

Also hab' ich als ersten Schritt mal eine Chat-Anwendung geschrieben, die einen ServerSocket anlegt, so dass sich ein Socket damit verbinden kann. Bis dahin: Kein Problem.

Ich kann auch Nachrichten zwischen zwei Anwendungen austauschen. Auch alles bestens.

ABER: Wie geh' ich denn dabei eigentlich am geschicktesten vor? Bislang mache ich es so, dass ich den Chat-Teilnehmern sage: "Schau mal nach, ob eine Nachricht angekommen ist. Nein? Dann schlafe 5s. Ja? Anzeigen. -- Und das mach' jetzt bitte so lange Du nicht beendet bist." -- Kürzer: Ich polle alle 5 Sekunden.

Das kann ja wohl eigentlich nicht im Sinne des Erfinders sein, oder? Das ist doch viel zu "teuer" (im Sinne von Performanz). Gibt es nicht so etwas wie einen "SocketListener", der mir sagt: "Hey Du! -- Willst Du 'ne Nachricht kaufe... ääääh... abrufen? Es ist gerade frisch eine angekommen..." --- also in dem Stil wär's jedenfalls optimal (nun gut: Vielleicht nicht ganz so prosaisch, aber ihr versteht, worauf ich hinaus will, oder?)

Gibt's da irgendwas?
Wie machen das denn ICQ oder MSN? Pollen die auch alle x Sekunden???? Kann ja eigentlich nicht sein...

Danke für die Hilfe/Ideen/Links/...
Philipp
 

Illuvatar

Top Contributor
Na du holst den InputStream vom Socket und liest. Und wenn der andere grad nix schreibt, blockiert die Methode halt bis der andere was schreibt.
 

Grizzly

Top Contributor
Eine Möglichkeit wäre, Java Messaging Framework zu benutzen. Dort wird ein Listener aufgerufen, wenn eine Nachricht anliegt. Aber das JMF ist dann wohl doch etwas zuviel des Guten (=> Overkill). Intern wird das aber wahrscheinlich ähnlich gelöst sein.
Ich wüsste ansonsten auch nicht, wie man das lösen will. Außer über Interrupts. Aber die gibt es ja in Java nicht ;) .
 

Beren77

Mitglied
Hmmm... Okay... Dann doch mit Thread.sleep...

"Illuvatar": Wenn die Methode blockiert muss ich halt eben den aktuellen Thread schlafen legen, damit der mir nicht meine Schach Engine blockiert... Sonst macht der Computer ja nur noch doofe Züge ;-)

Übrigens: Wenn Du "den" Ilúvatar meinst, wird der genau so geschrieben... Ein "l" und ein ´ auf dem u ;-))
 

Illuvatar

Top Contributor
Ja das solltest du vielleicht besser in nem eigenen Thread machen. Die Methode blockiert ja nur den Thread, der sie aufruft.

Ja, ich meine Ilúvatar, und ich weiß wie man ihn schreibt, Beren ;)
Aber als ich damals meinen ICQ-Account gemacht hab, hat sich irgendwie das zweite l eingeschlichen, und ú geht da glaub ich net.
 

Beren77

Mitglied
:)

Pascht scho! Keine Ahnung ob Sonderzeichen in Nicks funktionieren *Grübel*... Daher ja auch "Beren", das ist einfacher---war aber schon vergeben, daher 77. Anyway: Danke für die Hilfe. Der Chat funktionier. Ich find das mit dem Polling zwar nicht toll, aber egal.
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
B Multicast-Nachrichten-Empfang funktioniert nicht Netzwerkprogrammierung 5
T DataOutputStream Nachrichten werden fehlerhaft gesendet. Netzwerkprogrammierung 1
L Socket Nachrichten senden Netzwerkprogrammierung 3
Creylon Socket Mehrere gleichzeitig eingehende Nachrichten Netzwerkprogrammierung 8
Z Probleme beim Senden von Nachrichten an den Server Netzwerkprogrammierung 9
S javamail und filterung bekannter nachrichten Netzwerkprogrammierung 3
J Nach Dateiversand werden keine Nachrichten mehr übertragen Netzwerkprogrammierung 11
B Socket NIO-Server/Client-Abgeschnittene Nachrichten (Strings) Netzwerkprogrammierung 6
I Socket HTTP Nachrichten über Sockets verschicken Netzwerkprogrammierung 2
F Erhalten und Senden von Nachrichten anhand des Indexes des Clients Netzwerkprogrammierung 19
T Netzwerkchat Problem: Mehrere Nachrichten ~ Anfängerproblem Netzwerkprogrammierung 3
S ICQ Nachrichten abhöhren Netzwerkprogrammierung 4
S Knuddels Chat System: Bot / Nachrichten verschicken? Netzwerkprogrammierung 6
B Nachrichten über das Netzwerk verschicken Netzwerkprogrammierung 3
A Thread gibt Nachrichten mehrmals aus (Messenger in Java) Netzwerkprogrammierung 3
S Server mit mehreren Clients Nachrichten austauschen Netzwerkprogrammierung 6
D RMI Gui auf client updaten basierend auf den Property Änderung des Models auf dem Server ohne polling Netzwerkprogrammierung 12
S RMI Polling oder lange Verbindungen Netzwerkprogrammierung 6

Ähnliche Java Themen


Oben