STD;ATD;

mahadi

Mitglied
hallo leute !!!! bei einer Aufgabe wo ich ein STD bzw ATD emuliern soll,sollte ich ein string eingeben dann es zu binär umwandeln ,und dann multiplexen :
zb

kanal1 Binär : 01 ------------------------ > 01
kanal2 Binär : 10 ---------> 110101-------> 10
kanal3 Binär : 11 -------------------------- > 11

senden empfangen
bei ATD
kanal1 Binär : 01 ------------------------> 01
kanal2 Binär : 10 --------->111001-------> 10
kanal3 Binär : 11 ------------------------> 11

es hat geklappt mit stringtobinär aber mit der methoden send () und receive() nicht .
wer könnte dabei helfen???
 
Zuletzt bearbeitet:
S

SlaterB

Gast
Thema noch aktuell?
es ist nicht wirklich erkennbar worum es geht, was haben die Kanäle für eine Relevanz,
geht es um grundsätzliche Übertragung mit Sockets,

oder oder oder?
 

mahadi

Mitglied
es geht um ein sychrone zeitmultiplexverfahren zu simulieren
ich muss ein 3 strings eingeben ,dann es zu binär umwandeln.
zb 'a' Binär : 01100001
'b' Binär : 01100010
'c' Binär : 01100011
weil es sychrone ist. muss erst mal die 1 ,dann 0, 1,0,1,1 .......000.beim empfangen wieder die binär codes umwandeln und als strings ausgeben.

beim asychrone soll es jede bit mit ein header geschickt werden.
 
S

SlaterB

Gast
weiter habe ich nicht den Hauch einer Ahnung, worin eine Frage besteht, was andere beisteuern können/ sollen

bei
> das als ohne client server zu benutzen
+
> zu simulieren
könnte man vermuten, dass Netzwerk überhaupt keine reale Rolle spielt,
alles nur innerhalb eines Javaprogramms eben simuliert wird,
richtig?

oder sind doch mehrere Programme, mehrere Rechner beteiligt, Übertragung mit Socket, ServerSocket, also Server + Client?
 

FArt

Top Contributor
Definierer eine Klasse STD-Paket, welches die binären Nutzdaten aufnehmen kann. Diese Pakete haben eine feste Größe.
Zerlege die Nachrichten in einzelne Pakete und "verschicke" sie nacheinander (alle 1. Pakete, alle 2. Pakete usw.).
Du brauchst also beim Sender für jeden Sendekanal eine Queue, in der die Pakete warten. Auf der Empfangsseite nimmst du mit einem Dispatcher die Pakete entgegen und verteilst sie in der festen Reihenfolge an die Empfängerkanäle, die ihre Nachricht wieder zusammenbauen.

ATD ist sogar einfacher. Die ATD-Paketklasse enthält die Nutzdaten und die Empfängerinformation, also z.B. eine ID. jetzt kannst du Pakete verschiedener Größe durcheinander "verschicken". Der Dispatcher verteilt anhand der ID.

Ich würde vorschlagen folgende Klassen zu schreiben: StdPaket, AtdPaket, StdSender, AtdSender, StdEmpfaenger, AtdEmpfaenger, Transportlayer, Transportdata, Client.

Die Simulation kann so ablaufen: Instanziiere n Clients mit ihren Nachrichten. Diese geben nacheinander ihre Nachricht an den Sender ab. Dieser zerlegt die Nachrichten und steckt sie ein Transportdata-Objekt, welches im Layer abgelegt wird. Der Empfänger holt die Transport-Data Objekt ab, bastelt die Nachrichten zusammen und verteilt sie an die registrierten Empfänger.

Diese künstlichen Beispiele sind immer ein wenig seltsam zu durchdenken, aber da muss man in der Anfangszeit durch. Ich nehme an, dass ihr mit Multithreading noch nichts am Hut habt. Also muss dein Sender-Empfänger eben das Zeitverhalten "simulieren", z.B. durch die feste Paketgröße bei STD oder durch zufälliges Verschicken (= zusammensetzen einer Transportnachricht) der einzelnen Pakete/Frames bei ATD.
 

Neue Themen


Oben