AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Netzwerke Delphi CLient Socket Connect
Thema durchsuchen
Ansicht
Themen-Optionen

CLient Socket Connect

Ein Thema von MadMax · begonnen am 24. Mär 2003 · letzter Beitrag vom 26. Mär 2003
Antwort Antwort
MadMax

Registriert seit: 24. Mär 2003
46 Beiträge
 
#1

CLient Socket Connect

  Alt 24. Mär 2003, 12:38
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?
  Mit Zitat antworten Zitat
Minz

Registriert seit: 19. Dez 2002
476 Beiträge
 
#2
  Alt 24. Mär 2003, 13: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.
  Mit Zitat antworten Zitat
MadMax

Registriert seit: 24. Mär 2003
46 Beiträge
 
#3

Schleife Prozedur

  Alt 24. Mär 2003, 14:28
Hat vielleicht jemand dafür schon einen fertige schleife oder Prozedur ?
  Mit Zitat antworten Zitat
oki

Registriert seit: 30. Dez 2002
Ort: Brandshagen
1.819 Beiträge
 
Delphi 2007 Professional
 
#4
  Alt 24. Mär 2003, 16: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
  Mit Zitat antworten Zitat
Minz

Registriert seit: 19. Dez 2002
476 Beiträge
 
#5
  Alt 24. Mär 2003, 16:29
das meiste hab ich doch schon gesagt
  Mit Zitat antworten Zitat
oki

Registriert seit: 30. Dez 2002
Ort: Brandshagen
1.819 Beiträge
 
Delphi 2007 Professional
 
#6
  Alt 25. Mär 2003, 15: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
  Mit Zitat antworten Zitat
MadMax

Registriert seit: 24. Mär 2003
46 Beiträge
 
#7
  Alt 26. Mär 2003, 12: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.
  Mit Zitat antworten Zitat
Darkmorph

Registriert seit: 24. Mär 2003
37 Beiträge
 
Delphi 6 Professional
 
#8
  Alt 26. Mär 2003, 15: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
  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 19:19 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