![]() |
AW: Indy: Server an Client
Liste der Anhänge anzeigen (Anzahl: 2)
Im Anhang sieht man mein Vorhaben. Wenn ich das jetzt richtig verstehe bin ich der Server und der Client ist in diesem Fall Sick. Ich bekomme somit vom Client auf verschiedenen Ports etwas, welche der Client verarbeiten soll.
|
AW: Indy: Server an Client
Hi,
das Bild sagt in meinen Augen noch nicht aus was Du machen möchtest. Könntest Du den Sinn & Zweck mal versuchen in Worte zu fassen ? Greetz Data |
AW: Indy: Server an Client
Zitat:
Dazu benötigst Du nur einen Port. Ausser wenn die unidirektionalen 50007 und 50008 für send/receive benutzt. Die anderen unterscheiden sich in der Schnittstelle (HTTP, Socket, SSH) und teilweise im Protokoll. Für Deine Versuche ist vermutlich 2112 mit STX/ETX am ehesten geeignet. Bist Du im Besitz des Protokolls? |
AW: Indy: Server an Client
Ich bin noch nicht im Besitz des RFID. Ich möchte das ganze aber mit einem Client und Server simulieren. Ich benötige mehrere Portadressen.
Ich möchte folgendes: Der Client schickt über Port 10 etwas an Server - der Server erkennt den Port und führt den für diesen Port bestimmten Event aus. Das gleiche sollte auch für andere Ports gelten. |
AW: Indy: Server an Client
Und wo liegt Dein Problem?
Du erzeugst auf der Serverseite so viele Instanzen wie Du Ports brauchst. Dasselbe auf der Clientseite. |
AW: Indy: Server an Client
Hi Major,
jetzt bin ich auch ein wenig verwirrt. Was hat den der Port 10 mit der obrigen Grafik zu tuen ? Du möchtest den Server auf verschiedenen Ports laufen lassen , kein Problem dafür gibt es sogar mehrere Möglichkeiten : 1. Eine Anwendung, ein TIdTcpServer und über die Eigenschaft "Bindings" alle Ports hinzufügen, auf denen der Server lauschen soll. Das führt dazu das Du nur ein einen TIdTcpServer mit einem "OnExecute" hast, indem Du allerdings dann die Ports der verschiedenen Clients unterscheiden musst. 2. Eine Anwwendung mehrere TIdTcpServer, für jeden Port der für die Clients offen sein soll einen Server, dadurch gibt es auch für jeden port ein "eigenes" "OnExecute". 3. Mehrere Anwendungen bzw. eine Anwendung die mehrfach gestartet wird und je nach Configuration/Übergabe auf einem bestimmten Port läuft. Bsp.: Der Server soll auf 3 Ports lauschen, dann wird Dein Program 3 x gestartet : DeinServer.exe 44444 (diese Exe soll auf Port 44444 laufen) DeinServer.exe 44445 (diese Exe soll auf Port 44445 laufen) DeinServer.exe 44450 (diese Exe soll auf Port 44450 laufen) In der Anwendung selber hat Du nur einen TIdTcpServer und nur ein OnExecute, den Port des Servers setzt Du beim Start der Anwendung. Einfach wie jetzt hier im Bsp. die Eigenschaft "ParamStr" auslesen. Ich würde Variante 3 wählen! Übersichtlicher Code, Anzahl der Ports/Serverinstanz variabel und Du kannst im laufenden Betrieb einen Server "kicken"/neu starten ohne das die Clients der anderen Server davon betroffen sind(das ist im Live Betrieb nachher viel Wert). Zitat:
Antwort:
Delphi-Quellcode:
Jetzt möchtest Du wissen wie Du das dasselbe(Portunterscheidung) am Server machen kannst ?
IdTCPClient1.Socket.Binding.PeerPort
Delphi-Quellcode:
Eigentlich sollte alles klar sein, sehe kein Problem bei der Umsetzung Deines Vorhabens.
AContext.Socket.Binding.PeerPort
Greetz Data |
AW: Indy: Server an Client
Vielen Dank, werde Variante 1 und dann 3 ausprobieren.
PS: AContext.Connection.Socket.Binding.PeerPort ;) |
AW: Indy: Server an Client
hmm.. Ich bekomme aber einen Port zurück (3209) den ich gar nicht im Client deklariert habe o_O
Delphi-Quellcode:
Liegt es vielleicht daran das die Ports nicht von Netzwerkadministrator freigeben wurden? Bin in einem Schulnetzwerk.
procedure TForm2.IdTCPServer1Execute(AContext: TIdContext);
begin Memo1.Lines.Add(acontext.Connection.Socket.ReadLn); AContext.Connection.IOHandler.WriteLn(IntToStr(AContext.Connection.Socket.Binding.PeerPort) ' : Erfolgreich übermittelt!'); end; |
AW: Indy: Server an Client
Hi,
im Server ist PeerPort, der Port des Clients... Vielleicht habe ich mich unglücklich ausgedrückt ... Du brauchst dann:
Delphi-Quellcode:
Schau doch einfach mal was Du alles bei "AContext.Socket.Bindings." findest .
AContext.Socket.Bindung.Port
Greetz Data |
AW: Indy: Server an Client
achso, habe Indy 10 bei mir funktioniert nur:
AContext.Binding.Port, also ohne Socket |
Alle Zeitangaben in WEZ +1. Es ist jetzt 16:57 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