![]() |
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? |
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. |
Schleife Prozedur
Hat vielleicht jemand dafür schon einen fertige schleife oder Prozedur ?
|
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 |
das meiste hab ich doch schon gesagt :mrgreen:
|
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 |
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. |
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 06:36 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