Arbeit mit Sockets



  • weil das accept() den ganzen gui thread lahmlegt, bis jemand zum server verbindet 🙄



  • das heioßt ja ich werde in meinem server fenster nie etwas zu sehen bekommen, das ist doch total bescheu***. Und wie schreib ich nun nen kleinen Server, der Strings von einem Client an ihn zurückschickt ?

    Ich werd noch blöd dabei.



  • Hier steht alles!



  • bwl student? :p 🙄
    einfach mal ein swing tutorial lesen.



  • So, ich habe mich ersteinmal wieder beruhigt und bin es nochmal angegangen. Der Server läuft momentan (und auch zukünftig) in der Konsole. Lediglich der Client besitzt ein GUI.
    Das Programm läuft zufriedenstellend, ich möchte das Ganze aber noch auf 2 Clients erweitern und habe mir überlegt die Sockets in Arrays zu packen, so dass er 2 Clients bedienen kann.

    So nebenbei, nein bin kein BWL-Student, auch sehr unqualifizierter Kommentar.
    Danke für den Hinweis danach, ich werde mich mal damit beschäftigen.



  • Entschuldigt, wenn ich nochmal störe.
    Bin derzeit ziemlich stolz auf meine kleine Entwicklung.
    Der Server kann 2 Clients bedienen, sprich:
    - wenn Nachricht eintrifft wird diese an den anderen CLient geschickt
    Das Ganze funktioniert, da ich beide EingangsStreams auf inhalt prüfe.

    Wie gesagt, zum Server möchte ich nichts weiter hinzufügen, der läuft top.

    Ich habe lediglich ein Problem mit den Clients.
    Denn ich würde gerne Senden und Empfangen zur gleichen Zeit.

    Leider habe ich keine Ahnung, wie ich das bewerkstelligen kann, da ich ja gleichzeitig auf ankommenden Daten warten will UND welche verschicken möchte.

    Mit einer Konsole werde ich das wahrscheinlich nicht schaffen, da ich eine while Schleife zum überprüfen des Eingangsstreams verwende.

    Jemand ne Idee, wie ich die parallelität umsetze?





  • Jo, danke für die Hinweise.
    habe mich ein wenig mit Threads beschäftigt un bin die Sache noch einmal von Grund auf neu angegangen und siehe da es hat funktioniert.
    Danke nochmals für die Hinweise auf Threads 🙂



  • Bei Threads solltest du gleich einen Executor einsetzen, als auf einen Pool zurückgreifen.

    Siehe http://www.codeplanet.eu/tutorials/java/57-battleship.html?start=3.



  • da gibts ja noch nen Haufen zum durcharbeiten. 🙂
    Habe meinen Echo-Server dank Threads und der Vector-Standard-Klasse jetzt zu einem Chat umgebaut. Läuft alles soweit einwandfrei.

    Habe mir nur mal überlegt anstelle von BufferedReader und BufferedWriter könnte ich doch ganze Objekte streamen, in denen dann noch zusätzliche Informationen zum Text stehen könnten (z.B: Farbe,Fonts,Größe oder so). Nun gut, habe anstelle von Strings ne Message-Klasse entwickelt in der im Moment nur ein String drinsteckt.

    Klingt zwar etwas blöd, aber wenn ich den String als MessageObjekt auf alle anderen Clients gestreamt bekomme, kann ihc ja immernoch den Inhalt ändern.

    Bei der ganzen Arbeit ist mir dann aufgefallen, dass ich bei ObjectInputStream leider keine ready()-Methode mehr habe. Die habe ich vorher immer benutzt um zu schauen, ob sich etwas im Eingangsstrom des jeweiligen Threads befindet.

    Was mach ich nun? Gibt es eine Methode oder Möglichkeit, wie ich prüfen kann, ob Daten im Eingangsstrom vorliegen?

    PS: Ich würde hier nicht nachfragen, wenn ich mich bei Google und Co. nicht schon zu Tode gesucht hätte.

    Hoffe ihr könnt mir helfen 🙂


Anmelden zum Antworten