Folgende Situation:
Ich habe fürs Studium einen Generator für Fraktale geschrieben. Wenn ich den Algorithmus intern rechnen lasse (d.h. ich habe den Thread und die Ausgabe im selben Programm) kriege ich ein schönes Bild ohne jegliche Fehler. Ich hab mir jedoch gedacht es wäre toll, wenn ich zum Berechnen der Fraktale mehrere Pcs benutzen könnte. MulitCore support ist ja mit der .Net Runtime kein Problem, denn die legt verschiedene Threads auf die Kerne. Aber ich wollte mehr und habe angefangen meine "kerne" zu schreiben. Jeder Kern ist sozusagen ein Server der auf einem Pc läuft. Ich verbinde mich also mit meinem Programm zu jedem Server im Netzwerk, und gebe jedem Kern dann verschiedene Bereiche der Grafik mit, die Sie dann berechnen sollen. und hier kommts zum Problem. Der Kern berechnet die Daten, und schickt sie mir in der Form 15:X/Y/nummer zurück. Dabei stoße ich zuerst auf das Problem, dass Sockets einfach nachrichten aneinanderKetten, wenn sie schnell hintereinadner gesendet werden. das habe ich damit umgangen, dass ich hinter jede NAchricht einfach ein Environment.newLine gepappt habe. Die Strings sende ich via Encoding.UTF8.getBytes(""); und hole mir also am Client den String wieder. der hängt dann eben zusammen, was mich tierisch nervt >.<
Also trenne ich den string erst durch Newlines, dann hol ich mir den Code der vorne steht (15 in diesem fall) und dann schau ich mir die parameter an. Und jetzt zum eigentlichen problem. ich habe mal einen screenshot angehängt, wo ihr seht, wie mein Bild danach aussieht, erstens fehlen manchmal pixel wie es scheint. das kann daran liegen, dass es nicht so ganz funktioniert, mit dem Buffer, wenn eine nachricht abgeschnitten wird. dann hänge ich sie eigentlich vorne wieder dran, aber manchmal klappt das nicht =( weiß der Teufel wieso.
was mich aber eher aufregt, sind die hellen Punkte mittem im Schwarzen!! die gehören da einfach nicht hin! und der algorithmus ist exact der selbe wie der im Programm drin. also hab ich vermutet, dass da irgendwas mit der Übertragung nicht stimmt. Habe also einfach mal die nachricht 2 mal geschickt, der effekt war, dass die roten Punke weggingen (rot ist der hintergrund der Picbox) aber die Blauen blieben nach wie vor. und jetzt frage ich mich ernsthaft ob ich noch alle Tassen im Schrank habe, weil es kann doch nicht sein, dass ein algorithmus einfach an bestimmten stellen 100 mal durchläuft(oder mehr, je nach Iterationszahl), anstatt der erwarteten 3mal. (wenn die Eingabeparameter falsch wären würde das total anders aussehen)
Was mir dabei noch aufgefallen ist, ist, dass die Muster der Fehler bei jedem mal Identisch sind, also die schrägen linien links unten im bild z.B sind nach neustart beider programme wieder da.
hat irgendwer ne Ahnung wieso die Maschinen mir da derartig Streiche spielen? =(
/edit: ich hab jetzt mal das generierte vom kern lokal gespeichert. und das ist fehlerlos. also muss irgendwas bei der übertragung schiefgehen. aber was****?
Ich habe fürs Studium einen Generator für Fraktale geschrieben. Wenn ich den Algorithmus intern rechnen lasse (d.h. ich habe den Thread und die Ausgabe im selben Programm) kriege ich ein schönes Bild ohne jegliche Fehler. Ich hab mir jedoch gedacht es wäre toll, wenn ich zum Berechnen der Fraktale mehrere Pcs benutzen könnte. MulitCore support ist ja mit der .Net Runtime kein Problem, denn die legt verschiedene Threads auf die Kerne. Aber ich wollte mehr und habe angefangen meine "kerne" zu schreiben. Jeder Kern ist sozusagen ein Server der auf einem Pc läuft. Ich verbinde mich also mit meinem Programm zu jedem Server im Netzwerk, und gebe jedem Kern dann verschiedene Bereiche der Grafik mit, die Sie dann berechnen sollen. und hier kommts zum Problem. Der Kern berechnet die Daten, und schickt sie mir in der Form 15:X/Y/nummer zurück. Dabei stoße ich zuerst auf das Problem, dass Sockets einfach nachrichten aneinanderKetten, wenn sie schnell hintereinadner gesendet werden. das habe ich damit umgangen, dass ich hinter jede NAchricht einfach ein Environment.newLine gepappt habe. Die Strings sende ich via Encoding.UTF8.getBytes(""); und hole mir also am Client den String wieder. der hängt dann eben zusammen, was mich tierisch nervt >.<
Also trenne ich den string erst durch Newlines, dann hol ich mir den Code der vorne steht (15 in diesem fall) und dann schau ich mir die parameter an. Und jetzt zum eigentlichen problem. ich habe mal einen screenshot angehängt, wo ihr seht, wie mein Bild danach aussieht, erstens fehlen manchmal pixel wie es scheint. das kann daran liegen, dass es nicht so ganz funktioniert, mit dem Buffer, wenn eine nachricht abgeschnitten wird. dann hänge ich sie eigentlich vorne wieder dran, aber manchmal klappt das nicht =( weiß der Teufel wieso.
was mich aber eher aufregt, sind die hellen Punkte mittem im Schwarzen!! die gehören da einfach nicht hin! und der algorithmus ist exact der selbe wie der im Programm drin. also hab ich vermutet, dass da irgendwas mit der Übertragung nicht stimmt. Habe also einfach mal die nachricht 2 mal geschickt, der effekt war, dass die roten Punke weggingen (rot ist der hintergrund der Picbox) aber die Blauen blieben nach wie vor. und jetzt frage ich mich ernsthaft ob ich noch alle Tassen im Schrank habe, weil es kann doch nicht sein, dass ein algorithmus einfach an bestimmten stellen 100 mal durchläuft(oder mehr, je nach Iterationszahl), anstatt der erwarteten 3mal. (wenn die Eingabeparameter falsch wären würde das total anders aussehen)
Was mir dabei noch aufgefallen ist, ist, dass die Muster der Fehler bei jedem mal Identisch sind, also die schrägen linien links unten im bild z.B sind nach neustart beider programme wieder da.
hat irgendwer ne Ahnung wieso die Maschinen mir da derartig Streiche spielen? =(
/edit: ich hab jetzt mal das generierte vom kern lokal gespeichert. und das ist fehlerlos. also muss irgendwas bei der übertragung schiefgehen. aber was****?
Anhänge
Zuletzt bearbeitet: