tutorials.de Buch-Aktion 05/2012
Seite 2 von 2 ErsteErste 12
ERLEDIGT
JA
ANTWORTEN
25
ZUGRIFFE
706
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #16
    noxum noxum ist offline Mitglied Bronze
    Registriert seit
    Mar 2011
    Beiträge
    32
    Ganz oben war noch eine Zeile die hab ich vergessen zu Kopieren.
    Code java:
    1
    
    //package socketio;

    Ja da es aber um mein Abi geht und wir in der Schule diese Klasse benutzen, muss ich sie wohl nehmen.
     

  2. #17
    SE Tutorials.de Gastzugang
    Hmm .. wie gesagt : ich bleibe bei der Meinung das es nur schaded wenn man sich auf so einen totalen Schwachsinn einlässt ... aber naja ... wie du oder dein Lehrer darüber denken kann mir ja auch egal sein.

    Ich gebe dir nur den guten Rat dich nicht weiter mit diesem Mist zu beschäftgen wenn es nicht explizit verlangt wird sondern alles nur mit Standard-API zu lösen ...

    Du könntest aus Spass deinen Lehrer ja auch mal mit ner völlig anderen Lib wie den Apache-Commons ärgern um ihm mal zu zeigen : wenn wir schon Custom-Content nutzen ... dann bitte ORDENTLICHEN !


    btw : wenn das Package auskommentiert ist hat es ja wenig Sinn ... deinen Lehrer möchte ich mal persönlich kennen lernen ...
     

  3. #18
    Avatar von Akeshihiro
    Akeshihiro Akeshihiro ist offline Mitglied Platin
    Registriert seit
    Aug 2008
    Ort
    Kirchlengern (NRW)
    Beiträge
    647
    Beim "Lehrer ärgern" kommt meist nur das raus, dass er einen aufm Kika hat und man im Grunde alles vergessen kann, bis hin zu den Noten/Punkten und da kommt man nich so raus mit "Ja, aber ...". Es gibt auch gute Lehrer, aber gerade wenn die Lehrer schon in der Industrie mal gearbeitet haben, dann hab ich die Erfahrung gemacht, dass die sehr pissig werden können, wenn einer sein eigenes Ding macht und sich absichtlich über den Lehrer hinweg setzt. Bei einem Kumpel von mir hat einer aus seiner Klasse die Ausbildung wegen sowas abgebrochen. Also das kann echt ungemütlich werden, wenn das son A-loch-Lehrer ist, das is dann kein Spaß mehr und vor allem wenn der dann noch im entsprechenden Prüfungsgremium sitzt...

    Es ist definitiv ratsam auf eigene Faust für sich selbst was zu machen, damit man es auch richtig lernt, aber in der Schule lieber auf das hören, was der Lehrer sagt, egal wie schwachsinnig das sein mag.

    EDIT:
    Ich hab mir mal grad die Klasse angeschaut und ich muss auch sagen, dass die für Schüler definitiv die leichtere Variante ist. Das ist eine Klasse, die einfach drei Sachen vereint. Der Socket wird in der Klasse intern verarbeitet und genauso auch das Arbeiten mit den Streams. Man kann also bequem mit einem Objekt lesen und schreiben und muss sich das alles nicht irgendwie zusammenwurschteln und vor allem braucht man keinerlei Wissen zu Streams und Sockets. Also dumm ist die Klasse auf keinen Fall und für Schüler definitiv eine sehr gute Unterstützung.
    Geändert von Akeshihiro (24.09.11 um 18:21 Uhr)
     
    Man sagt, das Schwert eines Samurai sei seine Seele ...

    Mit den Beiträgen ist es wie mit Schwertern: Je besser die Rohstoffe sind und je öfter man diese bearbeitet, desto hochwertiger sind sie.

    Das Schmieden ist eine Kunst; Das Schreiben auch ;)

  4. #19
    SE Tutorials.de Gastzugang
    Gut ... die Klasse ist aber an sich sehr schlecht implementiert.

    1) Es fehlt ein eigenes Package , bzw das vom Original-Autor verwendete wurde auskommentiert.
    2) Der Name ist mit dem der "Original" Klasse identisch was insbesondere bei explizitem Import der Klasse java.net.Socket zu Problemen führen kann *eigentlich sollte hier der Compiler schon meckern da er ja nicht differenzieren kann*.
    3) Für die read-Operationen beim Erstellen des Sockets einen BufferedReader ... hier hätte man lieber den InputStream nehmen sollen um auch Byte-Operationen ausführen zu können.
    4) OutputStream fehlt völlig und wird bei allen write-Operationen mit getOutputStream() neu erzeugt.

    Also wie gesagt ... alleine davon das diese Klasse einem das arbeiten mit Sockets und Streams erschwert ist sie durch die oben genannten Fehler auch sehr schlecht implementiert. Ich sage ja auch nicht das man das nicht verwenden sollte weil es einem etwas Arbeit abnimmt ... sondern weil sie so gravierende Mängel und Fehler enthält ... und auch nur dazu führt das man sich falsches zur angewohnheit macht wie z.B. der Irrglaube das man von einem Socket dierekt lesen könnte.
    Alles in allem stecken da schon eine Menge Konzept-Fehler vom Original-Autor drin ... die sein Lehrer übernommen und durch das auskommentieren des Packages teilweise noch verschlimmert hat.
     

  5. #20
    Avatar von sheel
    sheel sheel ist offline Moderator
    tutorials.de Moderator
    Registriert seit
    Jul 2007
    Beiträge
    4.503
    Ich denke, noxum hat schon verstanden, was gemeint ist.
    Es bringt doch keinem was, wenn man sich lang und breit über eine andere Klasse beschwert, auf die man sowieso keinen Einfluss hat, und ins OT rutscht.

    Wenn noxum weitere Fragen hat, wird er sie schon stellen.
     
    Netiquette (vA §15) und Nutzungsregeln (vA §4.8) einhalten! Programmcode in Codetags/Codeboxen.
    Sehr gute Beiträge bitte Bewerten (Stern darunter oder "Danke").
    "Funktioniert nicht" ist zu ungenau! Code, Fehlermeldungen, Verhalten des Programms, ...?

  6. #21
    noxum noxum ist offline Mitglied Bronze
    Registriert seit
    Mar 2011
    Beiträge
    32
    Ja Fragen habe ich schon, aber dadurch das die Klassen Custom sind wird es wohl schwer sie zu beantworten

    Also mein Server und der Client läuft jetzt reibungslos. Jetzt wollte ich versuchen zwei Clients miteinander kommunizieren zu lassen, aber ich glaub so wie ich es mir überlegt habe ist das alles sehr suboptional.
    Aber naja werd ich noch ein wenig rumprobieren :/

    Aber danke für alle eure Antworten
     

  7. #22
    SE Tutorials.de Gastzugang
    Vielleicht verräts du uns doch mal wie du es dir gedacht hast. Vielleicht ist der Grundgedanke ja garnicht so falsch und du hast nur bei der Umsetzung einen Fehler. Wenn allerdings das Grund-Konzept schon falsch ist wird es natürlich sehr schwer ... aber wir sind natürlich gerne bereit dir dabei so gut wir können zu helfen.

    Eigentlich gibt es nur zwei Grundkonzepte
    1) Kommunikation über den Server
    2) dierekte Client-to-Client Kommunikation
     

  8. #23
    noxum noxum ist offline Mitglied Bronze
    Registriert seit
    Mar 2011
    Beiträge
    32
    Ja ich habe das Konzept der Kommunikation über den Server gewählt.
    Da ich aber noch nicht so lange mit der Netzwekprogrammierung arbeite habe ich leider noch nicht so die Erfahrungen.
    Naja bis jetzt habe ich es so gemacht, dass der Server immer auf eine neue Anfrage warte um dann einen neuen Thread zu erstellen. In dem Thread habe ich dann dieses Empfangen und Senden von Strings eingebaut.
    Da ich keine Ahnung habe wie es möglich ist das ein Thread dem anderen Thread etwas in Form von einem String mitteilen kann, habe ich mir überlegt dies über eine externe Klasse zu machen in welcher sich eine ArrayList befindet. Aber ich glaube der Gedanke an sich ist schonmal falsch. Denn ich denke es ist bestimmt möglich eine Verbindung der beiden Threads herzustellen.

    Naja mit der ArrayList ging es zwar bis jetzt auch(also beide haben die gleich ArrayList als Parameter übegeben bekommen und hatten somit immer die gleiche Liste abrufen können). Aber dann bin ich auf mein nächstes Problem gestoßen. Wie programmiere ich den Client so, dass er immer wenn der Server etwas sendet auch zuhört? Erst habe ich es mir so gedacht, dass ich einfach wie in der Spieleprogrammierung, eine schleife verwende welche immer prüft ob gerade etwas gesendet wird. Aber bei der Umsetzung hat das alles nicht so optimal geklappt und dadurch das ich die ganze Zeit den Gedanken im Kopf habe, dass es sowieso warscheinlich blödsinn ist das alles mit einer externen Klasse und einer ArrayList zu lösen bin ich gerade dabei mir etwas neues zu überlegen. Bis jetzt hab ich aber noch nichts gescheites gefunden :/

    Mensch mensch mensch ... mit den ganzen Websprachen ist das so viel einfacher
    Aber naja wenn man erstmal etwas in der Materie ist wird das hoffentlich schon.

    Könnt ihr mir vieleicht einen Tipp geben wie es umsetzen kann?

    Jetzige Stand:
    - Ein Multiclientfähiger Server.
    - Zwei EchoServer welche beide ein Objekt übergeben bekommen mit einer externen ArrayList

    Was es am besten werden soll:
    - Zwei Server die miteinander kommunizieren

    Danke für alle Tipps und Tricks

    MFG Noxum
    Geändert von noxum (25.09.11 um 01:27 Uhr)
     

  9. #24
    SE Tutorials.de Gastzugang
    Die Idee ist garnicht mal so falsch.
    Was du richtig erkannt hast : du brauchst irgendwo EIN Objekt was für ALLE Clients gleich ist. Nur war deine Wahl des Objektes eher sub-optimal. In der Regel werden nämlich nicht die auszutauschenden Nachrichten in eine List gepackt sondern die Client-Threads *Achtung : du sprichst von zwei "Servern" die mit ein ander reden ... was du meinst sind aber nur zwei Client-Threads die über die EINE Server-Instanz mit ein ander kommunizieren*.

    Auch wenn du mit dem Beispiel jetzt etwas Probleme bekommen wirst da du ja deine "zusammengeklebte" Socket/Stream-Klasse hast kann ich folgendes "Tutorial" nur bestens empfehlen
    http://java.seite.net/chat/index.html
    Das , was da beschrieben ist , ist zwar eigentlich ein Chat ... wenn du das ganze aber etwas abstrakter siehst ist eigentlich nichts weiter als das was du willst : mehrer Clients kommunizieren über einen Server.
    Auch hier gibt es wieder verschiedene Konzepte :
    1) Server-weiter Broadcast : alle Clients erhalten die von einem Client gesendete Nachricht , inklusive er selbst
    2) Channel-weiter Broadcast : nur Mitglieder eines bestimmten Channels erhalten die Nachricht , dabei können mehrere von ein ander unabhängige Channels auf dem Server exisitieren , dadurch ist es möglich die Menge der Clients die eine bestimmte Nachricht die von einem bestimmten Client gesendet wird auch nur an die zu senden die diese empfangen sollen
    3) dierekte Kommunikation : dabei teilt der sendene Client dem Server mit für welchen anderen Clienten die folgende Nachricht bestimmt ist , dabei wird diese Nachricht nur einfach an den Ziel-Client durchgereicht , es gibt kein Echo
    Die 1te Grundform ist in dem Tutorial beschrieben welches ich die gelinkt habe. Für die Formen 2 und 3 braucht es dann noch zusätzliche logik um die man sicher aber erst kümmern sollte wenn man das Grundgerüst fertig hat da der Server nur erweitert , nicht aber in seiner bisheringen Form verändert wird.

    btw : ein Echo-Server ist eine Sonderart : hierbei ist der Server zwar in der Lage mehrer Clienten gleichzeitig zu bedienen , jedoch reden diese nur mit sich selbst , eine Interkommunikation zwischen verschiedenen Clienten ist ausgeschlossen.

    Ich hoffe ich konnte dir einen Denkanstoß geben.
    Bei Problem , Fragen oder sonstigem frag hier lieber 2 mal bevor du es einmal falsch machst.
    noxum bedankt sich. 

  10. #25
    noxum noxum ist offline Mitglied Bronze
    Registriert seit
    Mar 2011
    Beiträge
    32
    Vielen Dank für deine ausführliche Hilfe, werde mir gleich mal das Tutorial ansehen.
     

  11. #26
    SE Tutorials.de Gastzugang
    Naja , es ist weniger Hilfe als das pure verlinken bereits vorhandener Seiten =D
     

Ähnliche Themen

  1. Spring findet meine Methode nicht und matcht die der Superclass, warum?
    Von DarthShader im Forum Enterprise Java (JEE, J2EE, Spring & Co.)
    Antworten: 3
    Letzter Beitrag: 16.07.09, 12:09
  2. Compiler findet package nicht
    Von theindra im Forum Java
    Antworten: 1
    Letzter Beitrag: 09.04.05, 23:44
  3. Findet Mesh nicht an
    Von Goy im Forum .NET Archiv
    Antworten: 1
    Letzter Beitrag: 22.02.05, 09:59
  4. Findet Methode nicht ..
    Von teppi im Forum Java
    Antworten: 2
    Letzter Beitrag: 09.08.04, 20:31
  5. [Compiler Error C2392] "Methode": Covariant-Rückgabetypen...?
    Von pajofego im Forum VisualStudio & MFC
    Antworten: 0
    Letzter Beitrag: 24.02.04, 12:00

Stichworte