Hallo liebe Gemeinde,
ich schreibe gerade spaßeshalber an einem kleinen Audio Chat (im Stil von Skype). Für Audio Eingang und Ausgang hab ich bereits alles, mein einziges Problem ist noch die Übertragung... für die brauche ich wohl UDP, das böte sich mit den Byte Arrays ja auch an.
Einziges Problem ist, dass ich UDP bisher konsequent vermieden habe und ich daher (weil ich zu sehr im Socket und ServerSocket Paradigma drin bin) absolut keine Vorstellung hab, wie das ganze abläuft. So wie ich das aus ein paar Tuts herausgelesen hab ist die Verbindung nicht wie bei TCP mit einem zentralen Server sondern per Peer2Peer. Aber wie sieht das in der Praxis aus? Hat da jeder Client einen DatagramSocket geöffnet, der sowohl sendet als auch empfängt? Wie tauschen die einzelnen Clients ihre IP Adressen aus, um zu kommunizieren? Braucht es dafür einen Handshake Server? Wie würde ich das machen, wenn ich dann mit mehreren Clients kommuniziere? Schickt dann ein Client über den Socket mehrere DatagramPackets an mehrere IP Adressen gleichzeitig oder geht das über einen zentralen Server, der die Packets dann broadcastet? Und gibt es eine Möglichkeit den Inhalt der DatagramPackets auseinanderzukennen? So im Sinne von: Dieses Packet beinhaltet Audiodaten, das andere einen String?
Ihr seht ich bin, was UDP angeht, noch komplett am Anfang also so eine kleine Hilfe um das Konzept der Kommunikation zu verstehen wäre sehr hilfreich.
Danke!
ich schreibe gerade spaßeshalber an einem kleinen Audio Chat (im Stil von Skype). Für Audio Eingang und Ausgang hab ich bereits alles, mein einziges Problem ist noch die Übertragung... für die brauche ich wohl UDP, das böte sich mit den Byte Arrays ja auch an.
Einziges Problem ist, dass ich UDP bisher konsequent vermieden habe und ich daher (weil ich zu sehr im Socket und ServerSocket Paradigma drin bin) absolut keine Vorstellung hab, wie das ganze abläuft. So wie ich das aus ein paar Tuts herausgelesen hab ist die Verbindung nicht wie bei TCP mit einem zentralen Server sondern per Peer2Peer. Aber wie sieht das in der Praxis aus? Hat da jeder Client einen DatagramSocket geöffnet, der sowohl sendet als auch empfängt? Wie tauschen die einzelnen Clients ihre IP Adressen aus, um zu kommunizieren? Braucht es dafür einen Handshake Server? Wie würde ich das machen, wenn ich dann mit mehreren Clients kommuniziere? Schickt dann ein Client über den Socket mehrere DatagramPackets an mehrere IP Adressen gleichzeitig oder geht das über einen zentralen Server, der die Packets dann broadcastet? Und gibt es eine Möglichkeit den Inhalt der DatagramPackets auseinanderzukennen? So im Sinne von: Dieses Packet beinhaltet Audiodaten, das andere einen String?
Ihr seht ich bin, was UDP angeht, noch komplett am Anfang also so eine kleine Hilfe um das Konzept der Kommunikation zu verstehen wäre sehr hilfreich.
Danke!