Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Netzwerke (https://www.delphipraxis.net/14-netzwerke/)
-   -   Delphi CLient Socket Connect (https://www.delphipraxis.net/3658-client-socket-connect.html)

MadMax 24. Mär 2003 11:38


CLient Socket Connect
 
Hallo,

Ich will von einem Client Programm aus Dynamische Verbindungen zu mehren Servern Programme gleichzeitig aufbauen. Reicht es wenn ich ein ClientSocket verwende oder muss ich z.B über eine For schleife mehrere Definieren?

Minz 24. Mär 2003 12:17

Soweit ich weiß müsstest du dann mehrere ClientSockets öffnen.
Umgekehrt ist es schon möglich, dass ein ServerSocket mehrere
Connections aufbaut.

Ein ClientSocket benötigt die Verbindungsdaten, ip und port des Servers, mit dem er sich verbinden soll. Wenn man diese ändert,
muss die Verbindung inaktiv sein. Du müsstest mehrere ClientSockets
zur Laufzeit erstellen, denke ich.

MadMax 24. Mär 2003 13:28

Schleife Prozedur
 
Hat vielleicht jemand dafür schon einen fertige schleife oder Prozedur ?

oki 24. Mär 2003 15:27

Hallo,

du kannst mit einer Client-Socket nur eine Verbindung zur selben Zeit öffnen.

Somit mußt du bei gleichzeitiger Verbindung zu mehreren Servern je eine Socket pro Verbindung öffnen.

Ich würde Dir empfehlen Deine Verbindungen in einer Liste zu führen und in der Abarbeitung dieser zur Laufzeit die ClientSocket's zu kreieren.

Ich weiß nicht, was für Kriterien die entsprechenden Socket-Verbindung auslösen. Es währe jedoch sinnvoll ein eigenes Verbindungsobjekt zu erstellen an das Du alle Verbindungsparameter übergibst und dieses dann den Aufbau der Socket-Verbindungen automatisiert.

Gruß oki

Minz 24. Mär 2003 15:29

das meiste hab ich doch schon gesagt :mrgreen:

oki 25. Mär 2003 14:52

Hi Minz.

Richtig. Ich hatte deinen Beitrag im schnellen lesen so nach dem Motto 'Glaub ich, bin mir nicht sicher!' interpretiert. Somit ist das eher die Bestätigung von meiner Seite.

Sorry, Gruß oki

MadMax 26. Mär 2003 11:09

Ich hab folgenden Code geschrieben. Mein Problem ist, da die socket Namen nicht bekannt sind kann ich nicht senden oder die Verbindung trennen.
Wie könnte ich das lösen?

Delphi-Quellcode:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  ExtCtrls, StdCtrls, UNetTools,tlhelp32, ScktComp, winsock, verbinnden;

type
  TForm1 = class(TForm)
    Panel2: TPanel;
    ListBox1: TListBox;
    Panel3: TPanel;
    Button1: TButton;
    Button3: TButton;
    Button2: TButton;
    Button4: TButton;
    Button5: TButton;
    procedure FormCreate(Sender: TObject);
    procedure ButtonClick(Sender: TObject);
  private

  public
   Con: TConnect;
   ClientSocket: TClientSocket;
  end;

var
  Form1: TForm1;

implementation

{$R *.DFM}

procedure TForm1.FormCreate(Sender: TObject);
begin
  LoadNetList(ListBox1,NIL);
  Con := TConnect.Create(Self);
end;

procedure TForm1.ButtonClick(Sender: TObject);
begin
  if Sender = Button1 then begin
   Con.Socket.SendText('D:\test\Wms.exe.lnk');
    end; if Sender = Button4 then begin
     Con.Socket.SendText('D:\test\iltis_start.exe.lnk');
      Button5.Enabled := true;
      end; if Sender = Button5 then begin
       Con.Socket.SendText('IltisWMS');
        end; if Sender = Button3 then begin
         Con.Connect;
          end; if Sender = Button2 then begin
           Con.Disconnect;
       end;
    end;
end.
Delphi-Quellcode:
unit verbinnden;

interface
 uses ScktComp;
type TConnect = class(TClientSocket)
  procedure Connect();
  procedure Disconnect();
end;

implementation

uses Unit1;

procedure TConnect.Connect;
begin
  Port := 2323;
  Host := Form1.ListBox1.Items[Form1.ListBox1.ItemIndex];
  active := true;
end;

procedure TConnect.Disconnect;
begin
  Host := Form1.ListBox1.Items[Form1.ListBox1.ItemIndex];
  active := false;
end;

end.

Darkmorph 26. Mär 2003 14:15

was bezweckst du damit?

dieser Code ergibt keinen Sinn...
ich entferne gleich mal die redundanzen und strukturiere den COde ein wenig, woraus sich dieser CODE ergibt:

Delphi-Quellcode:
var CON: TCLientSocket;
{deklarations-teil}

Procedure TForm1.Create();
begin
con:=TClientSocket.Create();
con.Port := 2323;
end;

procedure Connect;
begin
with con begin
Host := ListBox1.Items[Form1.ListBox1.ItemIndex];
active := true;
end;
end;

procedure Disconnect;
begin
con.close;
con.host:=ListBox1.Items[Form1.ListBox1.ItemIndex];
end;

procedure TForm1.ButtonClick(Sender: TObject);
begin
if Sender = Button1 then Con.Socket.SendText('D:\test\Wms.exe.lnk');
if Sender = Button4 then
  begin
  Con.Socket.SendText('D:\test\iltis_start.exe.lnk');
  Button5.Enabled := true;
  end;
if Sender = Button5 then Con.Socket.SendText('IltisWMS');
if Sender = Button3 then Connect;
if Sender = Button2 then Disconnect;
end;

Habe den CODE nicht getestet, sondern frei schnautze geschrieben, da ich dir nur den weg weisen wollte und nicht deine arbeit machen :)

dadurch sparste ne extra Bibliothek und schreibarbeit. außerdem ist dieser code ein wenig übersichtlicher... egal was dieser code bezweckt, dein weg ist umständlich...

MorPH


Alle Zeitangaben in WEZ +1. Es ist jetzt 08:04 Uhr.

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