Bei Verwendung von AVS als Ausgabeprogramm ist der Empfänger der Daten in der Programmierschnittstelle von AVS integriert, d.h. er ist ein AVS-Modul. Hierbei handelt es sich um ein Coroutine Modul, welches die eigene Ausführung selber starten kann, wenn z.B. Daten am Socket ankommen. Es braucht hierfür keinen Impuls von AVS wie das Drücken einer Taste oder das Empfangen von Daten durch einen Inputport.
Nachdem das Modul aus der Modulbibliothek in den Netzwerkeditor kopiert wurde, wird es initialisiert. Hierbei wird der Socket geöffnet und dem Benutzer dessen Nummer angezeigt. Danach gelangt es in eine Endlosschleife, in der es ständig überprüft, ob Daten am Socket angekommen sind. Hierfür wird die Funktion is_new_information verwendet. Der Empfänger wartet nun auf das erste Kontrollpaket. Dieses muß die Kennung SO_HELO haben. Hierauf wird ein zweites Kontrollpaket erwartet. Im anschließend empfangenen AVS-Initialisierungspaket steht die Information, wieviele Prozessoren Daten senden, die Prozessornummer des Senders sowie die Anzahl der Zeichnungen bzw. Geometrien, die hintereinander empfangen werden sollen. Danach wird für jedes Datenpaket ein AVS-Initialisierungspaket empfangen. In ihm steht die Datenbeschreibung. Das Ende der Initialisierung wird durch den Empfang eines Paketes mit der Kennung AVSINIT_END_TRANS bestätigt. In diesem Moment erhalten die Outputports des Moduls ihre farbige Signatur.
Abbildung: Vereinfachter Aufbau des Empfängers
In einer Schleife wird nun beim Empfang eines Datenpaketes immer zuerst die Kennung des Paketes überprüft. Anhand dieser Kennung kann das Modul entscheiden, wie weiter zu verfahren ist.
Handelt es sich bei der Kennung um die Kennung für den Beginn der Datenübertragung, liest das Modul zuerst die Beschreibung der Daten und anschließend solange Daten aus dem Socket, bis ein Datenpaket mit der Kennung für das Ende der Daten kommt. Dies geschieht alles analog zum oben beschriebenen Versenden der Pakete. Bei der Verwendung mehrerer Sender wiederholt sich jeweils das Empfangen der Pakete. Die Daten werden in ein Format, welches dem des Outputports entspricht, umgesetzt. Dies geschieht meist durch Kopieren der Felder. Die umgewandelten Daten werden dann über den Outputport des Moduls an das nächste Modul weitergegeben.
Nachdem das Übertragen der Datenpakete beendet ist, kann das nächste Paket vom Socket zwei verschiedene Kennungen besitzen: Entweder die Kennung für Daten, wobei sich der oben beschriebene Vorgang des Kopierens wiederholt, oder die Kennung für das Ende der Übertragung. In diesem Fall kehrt das Modul in die äußere Endlosschleife zurück und wartet so lange, bis ein anderes Programm den Socket eröffnet, um Daten zu senden.