generell: Manchmal hilft es sich klar zu machen, dass es rein auf der UDP Ebene keinen Server bzw. Client in dem Sinne gibt.
Genau. Und ich möchte drum herum Server und Client bauen und mit UDP kommunizieren lassen.
zu 1: Ich verstehe das Problem noch nicht so ganz. Du kannst eigentlich mit einem UDP Socket sowohl Broadcast als auch direkt adressierte Pakete empfangen. Es stimmt, dass du für ein Broadcast üblicherweise einen Port festlegst. Über den kannst du aber alle Kommunikation laufen lassen. Du musst halt nur immer prüfen von wem das Paket gerade kam.
Muss ich den UDP-Socket auf Empfängerseite nicht an einen bestimmten Port binden? Ich habe mich bisher an die API-Doku von SFML gehalten .. oder handelt es sich dabei nur um eine Einschränkung der UDP-Implementierung?
Binding the socket to a port is necessary for being able to receive data on that port.
Quelle: sf::UdpSocket
zu 2: Warum nimmst du nicht einfach IP+Port als ClientID?
Keine Ahnung .. war vllt zu einfach
zu 3: Broadcast sind halt fürs senden in ein "Subnet" interessant. Funktionieren aber nur in Netzen, in denen sie nicht rausgefiltert werden. Üblicherweise schickt man es an jeden Client einzeln und nicht als Broadcast, außer es sollen eh alle Client im gleichen Netz erhalten oder dir ist die Netzwerkbelastung egal+die Netzwerkinfrastuktur lässt es zu.
Dann sollte ich, wenn Sender und Empfänger über das Internet kommunizieren, eher an jeden einzelnen Empfänger senden als zu broadcasten - verstehe ich das richtig?