Einzelnen Beitrag anzeigen

Der_Unwissende

Registriert seit: 13. Dez 2003
Ort: Berlin
1.756 Beiträge
 
#62

Re: Pokerprojekt realisierung

  Alt 15. Mai 2007, 14:20
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
  Mit Zitat antworten Zitat