Hi,
Zitat von
.chicken:
Eigene Klasse TPokerTable, die pro Instanz ein Spiel verwaltet. Auf dem Server erstell ich dann ein dynamisches Array davon und an jede Message zum Server häng ich einfach eine ID für den passenden Server dran. Richtig soweit?
Soweit richtig, allerdings solltest Du
imho lieber eine TObjectList, intern macht die nichts anderes als ein dyn. Array zu verwalten. Allerdings bietet so eine Liste ein paar Vorteile. So wird z.B. die Größe für Dich verwaltet (die Art und Weise bringt ein paar Perfomance Vorteile) und dann wird auch dafür gesorgt, dass bei der Freigabe der Liste auch alle gespeicherten Instanzen freigeben werden (kann man auch abschalten).
Zitat von
.chicken:
Und dann nochwas, wenn ein Client verbindet und ich seinen Socket dann ine Objectlist packe, der Client dann disconnected und irgendwann wiederkommt. Kann ich den Client dann immernoch mit dem Socket in der List identifizieren? Auch wenn die
IP erneuert wurde?
Da solltest Du Dir dann nochmal das Thema Sockets anschauen. Ein solches Socket ist das Ende einer Verbindung. Dahinter verbirgt sich natürlich irgendwo ein Kanal und ein weiteres Socket, das ist aber aus der Sicht des Benutzers relativ egal. Er sieht halt nur das Socket und kann damit arbeiten (Dinge absenden oder empfangen). Unter anderem bieten die
IP-Sockets auch die Adresse der Gegenstelle (eine Metainformation). An sich bedeutet aber ein Abbau der Kommunikation auch, dass man hier den Socket wieder schließt. Kommt der selbe Client (mit gleicher oder andere
IP-Adresse) wieder, so wird hier ein neues Socket-Objekt verwendet. An sich solltest Du also nie unnötig ein Socket aus irgendwelchen Gründen offen lassen, dass ist eine System-Ressource und sollte immer so schnell wie möglich wieder frei gegeben werden (man hat immer nur endlich viele Ressourcen!).
Gruß Der Unwissende