ChatServer
lima-city → Forum → Programmiersprachen → Java
byte
code
datum
echtzeit
folgendes modell
frage
http
leitung
liste
musik
problem
realisieren
server
tauschen
ton
url
verbindung
verschicken
versenden
video
-
Hallo Leute!
Ich möchte einen Server realisieren, der nicht auf bisherige Weise nur Strings und Bytes verschicken kann, vielmehr soll dieser Server Streams jeder Art beim Client anzapfen können und diese dann an einen anderen Client weiterreichen können. Dieses Konzept soll es ermöglichen ein Video in Echtzeit zu verschicken. So ist es beispielsweise möglich, Musik zu teilen, Filme zu tauschen, aber auch eine VOIP-Verbindung ist kein Problem mehr, selbst Webcam-Daten müssten sich per Stream einfach senden lassen.
Mein Problem ist nun, wie ich das ganze mit Sockets realisiere. Zum einen bin ich mir nicht sicher, ob TCP/IP die richtige Lösung ist, Videos und Ton müssen schließlich in Echtzeit gesendet werden. Zum anderen müssen ja Server sowie Client multi-threaded sein, damit nicht blockiert wird.
Für den Server gibt es ja nun zwei Ansätze:
1. Alle Clients werden in einer Liste gespeichert und mit einer ID versehen, das ermöglicht ein schnelles Streamen, belegt aber bei vielen Benutzern viele Ressourcen, die allerdings wieder teilweise eingespart würden, da man nicht bei jeder Verbindung einen neuen Socket zu erstellen braucht.
2. Nur die aktuell sendenden Clients werden in einer Liste gespeichert. Trifft nun ein Stream von Client A für Client B ein, so muss A solange in der Leitung bleiben, bis sich B meldet, z. B. mit einer Alive-Anfrage, um den Stream weiterzuleiten. Das ist wesentlich ressourcensparender, aber ist dafür undurchsichtig und schwammig.
Bitte beratet mich da ein wenig,
ork -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage
-
Schon, aber das war ja nicht meine Frage
-
Hallo,
ich habe deine Frage verstanden und bin auch auf der suche nach einer solchen Lösung.
Bei mir soll allerdings nur ton übertragen werden. Ich habe bisher folgendes modell für den server
in betracht gezogen:
Server wartet auf verbindung
Verbindung=>neuer Thread
Thread wartet bis verbindung von client 2
Server kriegt noch eine verbindung
Thread wartet nicht mehr=>dann
while(true) byte[] b = new byte[8192]; in.read(b); out.write(b);
Das modell habe ich noch nicht geschrieben, aber es wird wohl auch sehr fehleranfällig.
Hoffe trotzdem es hat dir geholfen.
Gruß Tillorgias -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage