2015-11-10T16:05:19
ITobiIich sende eine bestimmte Anzahl von Datenpaketen vom Client zum Server und diese Datenpakete können in einer anderen Reihenfolge ankommen. Ich habe die Datenpakete bereits mit einem Index versehen um Sie identifizieren zu können jetzt hab ich nur das Problem Sie wieder in die richtige Reihenfolge zu kriegen und ich habe jeweils die Inhalte der einzelnen Datenpakete in einem Array-Element abgelegt und den Index für das jeweilige Array-Element verwendet.
Mal abgesehen von dem Socket-Problem, dass die anderen diskutieren -
wenn Du aus Deiner Message Index und Nutzdaten extrahiert hast und die Nutzdaten in einem Array unter dem Index ablegst, hast Du die Nutzdaten doch in der gewünschten Reihenfolge. Was musst Du sie dann noch sortieren? Das einzige was sein könnte, ist dass die Message für einen bestimmten Index zwischendurch noch fehlt und der Arraywert für diesen Index deshalb
undef ist.
Wenn Du deine Daten irgendwann in eine andere Reihenfolge bringst, sie danach aber wieder nach dem Index sortieren möchtest, empfiehlt sich, die Message in eine komplexere Datenstruktur zu verwandeln, die Felder für Index und Nutzdaten (und evtl. noch mehr) hat. Diese komplexe Datenstruktur kann ein Objekt, ein anonymer Hash mit festgelegten Keys oder ein anonymes Array sein. Beispiele:
my $msg = {index => $a, data => $data};
push @array, $msg;
my $index = $msg->{index};
my $data = $msg->{data};
my @sorted = sort {$a->{index} <=> $b->{index}} @array;
my $msg = [$a, $data];
push @array, $msg;
my $index = $msg->[0];
my $data = $msg->[1];
my @sorted = sort {$a->[0] <=> $b->[0]} @array;