AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Netzwerke Delphi Winsock: 1 Client mit mehreren Servern
Thema durchsuchen
Ansicht
Themen-Optionen

Winsock: 1 Client mit mehreren Servern

Ein Thema von Nogge · begonnen am 13. Aug 2006 · letzter Beitrag vom 18. Aug 2006
Antwort Antwort
Nogge

Registriert seit: 15. Jul 2004
336 Beiträge
 
Delphi 7 Professional
 
#1

Winsock: 1 Client mit mehreren Servern

  Alt 13. Aug 2006, 10:51
Hallo Community!
Ich habe eine Server-Client-Klasse erfolgreich programmieren können, womit eine Verbindung zw. diesen möglich ist. Außerdem ist es möglich, mit mehreren Clients gleichzeitig auf den einen Server zu verbinden. Doch ich brauche meine Klasse nun für ein recht großes Projekt, ein Spiel, wo die Geschwindigkeit des Datenaustausches entscheidend ist.
Der eigene Client soll sich (im Multiplayer) bei allen Servern, d.h. bei allen anderen Spielern anmelden und diesen Daten senden. Dafür gibt es jetzt 2 für mich offensichtliche Möglichkeiten:

1. Der eine eigene Client connectet zu Server 1, schickt diesem Daten, disconnectet und führt diese Prozedur für jeden anderen Server (2,3,..) aus.

2. Es gibt mehrere eigene Clients; einen für jeden Server, mit dem ich mich verbinden möchte.

Letzteres hört sich natürlich am schnellsten an, ist aber von der Verwaltung her auch etwas schwieriger zu handhaben. Aber eigentlich erhoffe ich mir von diesem Thread, dass mir irgendeiner eine 3. (die optimale) Möglichkeit präsentieren kann

Auf jeden Fall bräuchte ich euren Rat!
Viele Dank schon mal.
Nogge
  Mit Zitat antworten Zitat
cmrudolph

Registriert seit: 14. Aug 2006
29 Beiträge
 
Delphi 7 Professional
 
#2

Re: Winsock: 1 Client mit mehreren Servern

  Alt 14. Aug 2006, 21:56
Hallo Nogge,
hast du mal über die Möglichkeit nachgedacht einfach udp zu verwenden?
Da sparst du dir das Connecten und Disconnecten, hast einen geringeren Overhead im Protokoll und kannst zB mit dem Indy UDP Clienten sehr einfach und schnell die Pakete direkt an den Rechner verschicken.
mfG, Christian
  Mit Zitat antworten Zitat
pszopp

Registriert seit: 7. Sep 2005
Ort: Alsdorf
95 Beiträge
 
Delphi 2010 Professional
 
#3

Re: Winsock: 1 Client mit mehreren Servern

  Alt 14. Aug 2006, 22:04
Hi,

bei UDP muss man aber beachten, dass es verbindungslos ist,
und deswegen Pakete in falscher Reihenfolge ankommen können.
Spielt die Richtigkeit der Daten eine Rolle, dann sollte man lieber
bei TCP bleiben.

[edit]
Auf wie vielen Clients wird das Programm denn später laufen?
Und wie viele Server soll es geben?
[/edit]


Gruß,
pszopp
www.pstipp.de | Tippseite zur Formel 1 und Fußball WM/EM - kostenlos und Just-For-Fun
  Mit Zitat antworten Zitat
cmrudolph

Registriert seit: 14. Aug 2006
29 Beiträge
 
Delphi 7 Professional
 
#4

Re: Winsock: 1 Client mit mehreren Servern

  Alt 14. Aug 2006, 22:16
Hallo,
eine Möglichkeit dem entgegenzukommen ist, dass man im UDP Paket einfach eine Sequenznummer mitsendet (wie es beim TCP auch gemacht wird) und dann einfach zu spät kommende Pakete ignoriert. Und da es natürlich vorkommen kann, dass man Pakete verliert kann man sicherheitshalber die Pakete mehrfach senden.
Wenn es nicht wirklich absolut auf die Geschwindigkeit ankommt ist TCP aber schon vorzuziehen.
Dann könntest du die Clienten einfach in einem Array dynamisch erstellen und jeweils zu einem Server verbinden. Das ist dann so ähnlich wie bei der alten TServerSocket Komponente, nur, dass du immer einen vollständigen Clienten und nicht nur den Socket im Array hast.
Eine weitere Möglichkeit mit mehreren TCP Clients zu arbeiten wäre direkt mit der WinAPI, wobei das eigentlich ein wenig dem Delphi Gedanken widerspricht, denke ich mal.
mfG, Christian
  Mit Zitat antworten Zitat
Nogge

Registriert seit: 15. Jul 2004
336 Beiträge
 
Delphi 7 Professional
 
#5

Re: Winsock: 1 Client mit mehreren Servern

  Alt 18. Aug 2006, 17:19
Danke für euren Rat!
Ich habe auf keinen Fall vor, die Indy-Komponenten zu verwenden, da diese unglaublich viele sinnlose Eigenschaften und eine sehr große Komplexität aufweisen. Ich habe mir ja bereits die WinAPI für meine eigene Klasse benutzt und das soll auch so bleiben, da so die optimale Geschwindigkeit gewährleistet werden kann. Die WinAPI bietet wirklich nur die Basisbefehle, so dass keine unnütze Speicherbelastung zustande kommen kann.
Das 3D-Spiel soll später mit bis zu 16 Spieler ohne Probleme laufen, sodass ich mind. so viele Clients bzw. Server benötige. Ich benutze auf jeden Fall das TCP und melde mich in den nächsten Tagen mit neuen Ergebnissen bzw. Fragen noch mal :-)

Gruß Nogge
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 06:23 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz