Domanda

Prima di tutto, io sono solo un hobby, quindi mi dispiace se questo è domanda stupida o se devo essere troppo ingenuo. (Significa anche che non posso comprare librerie costosi)

Questa è la situazione: Sto costruendo una semplice applicazione chat vocale in C # .NET (qualcosa di simile a Ventrilo o TeamSpeak, ma solo per circa 15 o 20 persone, e in esecuzione su 100Mbps). Ho di lavoro (filo di deposizione delle uova per ogni cliente) di server e applicazioni client mediante UDP per il collegamento e DirectSound per la cattura e la riproduzione del suono. Posso fare "1 su 1" chiamate, ma io non riesco a capire una delle cose più importanti:

Come faccio ad avere più di due persone nella conversazione?

È stato utile?

Soluzione

Hai bisogno di qualche luogo centralizzato per inviare i pacchetti back tramite un multicast, oppure avete bisogno di un approccio decentralizzato, dove ogni cliente è collegato a tutti gli altri clienti, e ogni cliente sta ospitando un multicast. Che cosa si vuole evitare è fare le macchine avanti i loro dati ad ogni altra macchina, il che porterebbe a O (n) il tempo di inviare un messaggio a ogni macchina (e I / O è lento!).

In entrambi i casi, si finisce con lo stesso problema: come combinare i flussi audio. Un meccanismo semplice per raggiungere questo obiettivo è quello di bit a bit-o i segnali insieme prima di inviare di nuovo fuori (sia fuori la porta di rete, o fuori per gli altoparlanti), ma questo presuppone che l'accesso a flussi non compressi e ragionevolmente sincronizzati.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top