Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Netzwerke (https://www.delphipraxis.net/14-netzwerke/)
-   -   Delphi Mehrere Sockets in einer Anwendung (https://www.delphipraxis.net/99928-mehrere-sockets-einer-anwendung.html)

sk0r 19. Sep 2007 18:00


Mehrere Sockets in einer Anwendung
 
Hi,

ich möchte, einfach nur zur Übung, einen kleinen Chat schreiben.
Also auch mit Server. Das Problem sind die Sockets. Ich benötige ja
mehrere Sockets. Nun ist die Frage, wie man das am besten lösen könnte.
Die Sockets sollen ja dafür da sein, dass ich zu jedem Verbunden
Clienten etwas senden kann. Dafür müsste ich dann das entsprechende
Socket, welches für den entsprechenden Clienten ist, benutzen.

Ich dachte eventuell an:
Delphi-Quellcode:
Variable: array of TClientSocket;
Ich möchte aber lieber erstmal eure Vorschläge lesen.

Danke für Hilfe im Voraus!

MfG: sk0r

Torpedo 19. Sep 2007 18:05

Re: Mehrere Sockets in einer Anwendung
 
Normal verbindet man sich nicht zu jedem Client.
Du verbindest dich nur zum Server und schickst dem dann alle Nachrichten und Empfänger. Der leitet sie dann weiter.

sk0r 19. Sep 2007 18:40

Re: Mehrere Sockets in einer Anwendung
 
Das Prinzip ist mir völlig klar. Ich weiß nur nicht, wie ich es umsetzen soll.
Ich brauche doch für jeden Clienten einen Socket, der die Verbindung zu dem Clienten "handlet".
Oder wie macht man das sonst?

Da bräuchte ich Hilfe.

wicht 19. Sep 2007 19:01

Re: Mehrere Sockets in einer Anwendung
 
Du brauchst für jeden Client einen Socket, der die Verbindung zum Server hält. Das wolltest Du oben glaube ich.
Dafür würde ich mir mal den TIdTCPServer anschauen von den Indy-Klassen. Der ist meiner Meinung nach ganz gut. Sollte es auch Beispiele für geben.

sk0r 19. Sep 2007 20:24

Re: Mehrere Sockets in einer Anwendung
 
Ich habe bis jetzt immer die TServerSocket Komponente aus der ScktComp Unit benutzt
und möcht nur dann eine andere nehmen, falls es mit ihr wirklich nicht funktioniert.

Geht das denn mit dieser Komponente nicht? Das sollte doch eigentlich funktionieren.
Mit Indy kenne ich mich gar nicht aus.

Hat jemand Erfahrung mit der TServerSocket Komponente?

Muetze1 19. Sep 2007 20:32

Re: Mehrere Sockets in einer Anwendung
 
Der ServerSocket hat eine Untereigenschaft Connections[] und ConnectionCount. Darin findest du den Socket zu jedem Client der mit dir verbunden ist. Somit kannst du doch leicht nach empfangen einer Nachricht von einem Client diese an alle anderen Clients weitersenden.

Delphi-Quellcode:
procedure TForm1.ServerSocketClientRead(Sender: TObject; Socket: TCustomWinSocket);
var
  i: Integer;
  lMsg: string;
begin
  lMsg := Socket.ReceiveText;

  for i := 0 to pred(ServerSocket1.Socket.ConnectionCount) do
  begin
    if ServerSocket1.Socket.Connections[i] <> Socket then // nicht an den Sender selbst schicken
      ServerSocket1.Socket.Connections[i].SendText(lMsg);
  end;
end;


Alle Zeitangaben in WEZ +1. Es ist jetzt 10:55 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz