Ok also nochmal von vorn:
Ich verwende mal die Bezeichnung Peer, vielleicht ist es dann besser verständlich.
Jeder Peer erzeugt Daten. Diese Daten sollen dann zu jedem anderen Peer gesendet werden. Das heißt jeder Peer ist mit allen anderen Peers verbunden. Meine Frage ist: Jeweils ein Server SOCKET und ein Client SOCKET pro Peer, oder mehrere SOCKETS pro Peer.
Bsp:
ENTWEDER:
Ein Peer hat einen Server Socket und einen Client Socket.
4 Peers: A, B, C, D.
Wenn sich Daten bei Peer C ändern, schickt er diese an den Server Socket von Peer A und B.
Server@Peer A empfängt die Daten, und leitet sie an Server@Peer D weiter, während Client@Peer C noch an Server@Peer B sendet.
Nun haben alle die aktuellen Daten. Wenn jetzt aber alle gleichzeitig neue Daten erzeugen, könnte das ganze etwas langsam werden, vorallem wenn es sich um mehr Peers handelt als in diesem Beispiel.
ODER:
Jeder Peer hat für jede Verbindung eine Klasse
Delphi-Quellcode:
TConnection = class
private
FClient: TClientSocket;
FServer: TServerSocket;
end;
Immer wenn sich etwas an seinen Daten ändert, schickt er diese Änderung an alle TConnections.
Der physikalische SERVER den ihr meint, existiert nur als Vermittler. Er sagt jedem der Peers, welche
IP die anderen Peers haben. Daraufhin stellt jeder Peer eine Verbindung zum anderen her.
*edit*
Ich glaube mir ist gerade die Lösung eingefallen.
Jeder Peer hat einen Server Socket und für jeden anderen Peer einen eigenen Client Socket. Müsste optimal sein, oder?