Frage

Zunächst bin ich nur ein Hobbyist, also tut es mir leid, wenn dies eine dumme Frage ist oder ob ich zu naiv bin. (Es bedeutet auch, dass ich keine teuren Bibliotheken kaufen kann)

Dies ist die Situation: Ich baue eine einfache Sprach -Chat -Anwendung in C#.NET (so etwas wie Ventrilo oder Teamspeak, aber nur für ungefähr 15 oder 20 Personen und läuft auf 100 Mbit / s LAN). Ich habe einen Arbeitsserver (Laich -Thread für jeden Client) und die Client -Anwendung mit UDP für die Verbindung und leiten Sie den Sound für das Erfassen und Abspielen des Sounds an. Ich kann "1 zu 1" -Anrufe tätigen, aber ich kann nicht eines der wichtigsten Dinge herausfinden:

Wie habe ich mehr als zwei Leute im Gespräch?

War es hilfreich?

Lösung

Sie benötigen einen zentralen Ort, um die Pakete über einen Multicast zurückzuschicken, oder Sie benötigen einen dezentralen Ansatz, bei dem jeder Client mit jedem anderen Client verbunden ist und jeder Client einen Multicast hostet. Was Sie vermeiden möchten, ist, die Maschinen ihre Daten an jede andere Maschine weiterzuleiten, was dazu führen würde, dass O (n) Zeit zum Senden einer Nachricht an jede Maschine sendet (und I/O ist langsam!).

In beiden Szenarien haben Sie das gleiche Problem: So kombinieren Sie die Audio -Streams. Ein einfacher Mechanismus, um dies zu erreichen, besteht darin, die Signale zu bitweise oder die Signale zusammen zu erzielen, bevor Sie sie zurücksenden (entweder den Netzwerkport oder Ihre Sprecher). Dies setzt jedoch voraus, dass Sie Zugriff auf nicht komprimierte und vernünftig synchronisierte Streams haben.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top