[Java] Multiuser-Editor mit Pipes?!

Dieses Thema im Forum "Programmierung & Entwicklung" wurde erstellt von die_kackwurst, 28. Oktober 2009 .

Schlagworte:
?

Welche Variante nehmen?

  1. Variante 1

    1 Stimme(n)
    20,0%
  2. Variante 2

    2 Stimme(n)
    40,0%
  3. Variante 3

    0 Stimme(n)
    0,0%
  4. andere

    2 Stimme(n)
    40,0%
  1. 28. Oktober 2009
    Multiuser-Editor mit Pipes?!

    Moin!

    Wie vielleicht einige schon mitbekommen haben, arbeite ich zur Zeit an einem Multiuser-Editor.
    Ich habe mir das so vorgestellt, dass halt mehrere Leute das Programm öffnen. Einer sagt: "Ich mach Host" und klickt dann auf den Button "Hosten".

    Danach soll dann der Server gestartet werden. Die anderen Verbinden sich dann mit der IP des Hosters zu dem Server sodass die Verbindung zwischen allen besteht - soweit müsste das umsetzbar sein ne?

    Jedenfalls stehe ich jetzt vor der Frage: wie mache ich das mit dem Multiuser-Quatsch Generell hatte ich mir die Übertragung der neuen Daten so überlegt, dass ich nach jedem Zeichenanschlag (außer STRG, SHIFT, ALT,...) die Position auslese und das eingegebene Zeichen. Das wird dann zum Server geschickt und an alle anderen Teilnehmer der Session verschickt. Darauf wird dann aus diesen Informationen das Zeichen an der richtigen Stelle eingefügt und farblich in der Farbe des Autors markiert. Müsste ja so klappen oder?
    Doch ich bin mir noch nicht sicher wie das mache wer grad schreibt... Ich habe mich ein bisschen umgehört und dürfte es folgende Varianten geben:

    1) Button "Master"
    Der der etwas schreiben will muss den Button Master klicken. Daraufhin wird bei den anderen Teilnehmern, dieser Button deaktiviert und erst wieder aktiviert, wenn der andere die Masterfunktion deaktivert hat. Dann kann der nächste --> ist eigentlich recht umständlich von der Bedienung her...

    2) Automatische Mastervergabe
    Sobald einer einen Tastenanschlag macht, wird dieser zum Master für beispielsweise die nächste Sekunde und die anderen sind gesperrt... --> Probleme bei gleichzeichtigem Tastenanschlag...

    3) Named Pipes
    Als ich mich während meinem Studium jetzt so ein wenig mit Pipes beschäftigen durfte kam mir die Idee. Ich könnte es komplett freilassen wann wer tippt.. Sobald jemand eine Eingabe macht, wird diese zuerst in eine Pipe weitergeleitet, welche vom Server erstellt wurde. Daraufhin greif der Server auf die Pipe nach dem FIFO-Prinzip zu und verarbeitet die ganzen Kommandos --> hört sich eignetlich am komfortabelsten an, aber ich bin mir nicht sicher ob es praktizierbar ist. Fakt ist, dass es die Klasse PipedOutputStream und so gibt...

    Also was sagt ihr so zu meinen Ausführungen? Was ist praktikabel? Wie würdet ihr es machen? Habt ihr noch mehr Varianten auf dem Kasten? Kennt sich vielleicht jemand schon mit dem ganzen Problem aus?

    Bin schonmal ganz gespannt auf hoffentlich viele interessante Beiträge

    Mfg
     
  2. 28. Oktober 2009
    AW: Multiuser-Editor mit Pipes?!

    Hey

    ich find die Idee mit den Pipes grundsätzlich gar nicht mal schlecht!
    Allerdings besteht dann noch das Problem, dass wenn 2 User gleichzeitig an eine Stelle schreiben wollen, möglicherweise ein durcheinander aus Zeichen von 2 Leuten ensteht...

    Um das zu umgehen wär mein allererster Einfall gewesen den Editor in 2 Fenster aufzuteilen, ähnlich einem instant messenger...
    Im unteren Teil kann dann jemand einen Satz oder mehrere Schreiben und formatieren...
    Im oberen Teil wird der aktuelle Gesamttext vom Server angezeigt...
    Wenn der User dann im oberen fenster an eine bestimmte Stelle klickt wird der Text von unten an den Server verschickt, mitsamt der Position, an der er den gerne hätte....
    Am Server wäre dann so ne Queue net schlecht (also FIFO) die das ganze dann abarbeitet und in den Gesamttext einträgt...
    Und bei jeder Änderung wird wieder an die Clients der Gesamttext (oder nur die änderungen) verschickt damit sich die Anzeige im Oberen Editorteil mit ändert...

    naja...des is mir halt jetz auf die Schnelle dazu eingefallen...
    aus der realisierung halt ich mich raus, java mag ich net ^^

    mfG
     
  3. 28. Oktober 2009
    AW: Multiuser-Editor mit Pipes?!

    schonmal danke für deine antwort... aber so würde das nicht gehen - das kann so ähnlich vielleicht bei dem Chat gemacht werden (wär mir da aber glaube zu kompliziert)

    ich hätte das mit den pipes halt so gedacht das ich eine Klasse "Eingabe" meinetwegen übergebe welche die Eigenschafen: User, Position, Zeichen, Farbe hat... Dadurch wäre ja ein durcheinander quasi ausgeschlossen, da selbst wenn ein anderer typ nach mir gleich etwas tippt, seine ganzen Eigenschaften übergeben werden und somit kein problem besteht... man müsste nur überprüfen ob ein zeichen vor mir eingegeben wurde, wenn das der fall ist, müsste sich die position des neuen zeichens entsprechend nach hinten verschieben --> dürfte eigentlich die einzigste hürde sein...

    Ich find java auch nicht so klasse aber was soll man machen wenns der prof so will

    mfg
     
  4. 31. Oktober 2009
    AW: Multiuser-Editor mit Pipes?!

    leute kommt... es muss do noch ne paar meinungen und kluge köpfe zu einem solchen thema geben

    bitte helft mir! ist wirklich wichtig...
     
  5. 31. Oktober 2009
    AW: Multiuser-Editor mit Pipes?!

    Ich finde die Pipes auch am sinvollsten. Nur musst du die "Position" an dem das Zeichen eingefügt werden soll, relativ zu einem gewählten Punkt verwenden.
    Angenommen, jemand schreibt was auf der Position 20 und der andere schreibt ein Text bei der Position 30. Wird jedes Zeichen nach dem FIFO Prinzip in die Pipe geschrieben, erhällst du einen Zeichensalat. Ideal wäre wenn der Server dies managen kann und immer die aktuelle Zeichenposition an den Client schickt. Nach jedem abgearbeiteten Zeichen muss der Server kontrollieren ob auch noch alle Positionen für die Clients stimmen und notfalls neu berechnen.

    Falls du so ein Server Management programmierst, musst du noch weitere Fälle abfragen:
    - Mehrere Personen reservieren sich die gleiche Position im Editor (Bsp. Position 30).
    - Gleichzeitiges Löschen und Erstellen.
    - Löschen oder Bearbeiten von mehere Zeichen durch markieren? ist das gewünscht oder wird das benötigt?
    - Kopieren von Texten innerhalb des Editors.
     
  6. 1. November 2009
    AW: Multiuser-Editor mit Pipes?!

    Vielen dank für deine tipps... Also die angesprochenen funktionen sollte das programm schon beherrschen... Da bin ich ja grad ein wenig am verzweifeln wie das umzusetzen ist... Diese positionskontrolle ist ja einfach umzusetzen...

    Aber wie mache ich das mit gleicher position?? Wie mit dem markieren?? Das mit dem einfügen dürfte wohl auch machbar sein, da es ja nur die kontrolle der tastenkombination ist...

    Hat jemand schon erfahrungen mit pipes?? Wie funktioniert das genau??

    Außerdem habe ich das problem, dass ich bei meinem styledtext keine keycodes vergleichen kann.. Ich müsste ja scho wissen ob jemand z.b. ne pfeiltaste oder nen buchstaben gedrückt hat... Wie bekomm i das hin??

    Würde ungern den styledtext wechsel, da ich die methoden speichern, öffnen, usw. in meinem tabbedpane fertig hab...

    Vielen dank schonma
     
  7. 9. November 2009
    AW: Multiuser-Editor mit Pipes?!

    Leute... Die die abgestimmt haben können doch bitte auch ihre Meinung begründen...
     
  8. 9. November 2009
    AW: Multiuser-Editor mit Pipes?!

    Wie wär es denn, wenn du die Zeile, in der der User seinen Cursor hat, für die anderen Sperrst?

    Dann hast du das Problem mit dem "Überschreiben" nicht.

    Außerdem soll ein User einen Programmteil (auch über mehrere Zeilen hinweg) sperren können.
    Wenn er gerade einen komplizierten denkweg runterprogrammiert, und der andere einfach reinpfuscht ist das nicht sehr angenehm
     
  9. Video Script

    Videos zum Themenbereich

    * gefundene Videos auf YouTube, anhand der Überschrift.