AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Netzwerke Anfängerfrage Server - Client

Anfängerfrage Server - Client

Ein Thema von iphi · begonnen am 16. Sep 2017 · letzter Beitrag vom 18. Sep 2017
Antwort Antwort
iphi

Registriert seit: 13. Feb 2009
262 Beiträge
 
Delphi 7 Personal
 
#1

Anfängerfrage Server - Client

  Alt 16. Sep 2017, 14:20
Hallo,

da ich noch keinerlei Erfahrung mit dem Netzwerken habe, benutze ich vieleicht das falsche Vokabular.
Ich bitte um generelle Stichworte, wo ich weiterlernen muss.

Ich habe folgendes vor:
Es geht um zwei PCs, die am selben LAN hängen (also nicht Internet).
Auf dem einen PC soll ein Serverprogramm laufen, auf dem anderen ein Client.
Der Client soll über das LAN auf dem Server Aktionen auslösen und vom Server auch Daten empfangen können.

Ich habe gesehen, dass da Delphi bereits etwas zur Verfügung stellt (TCPServer, TCPClient). Sind das die richtigen Objekte für meinen Zweck oder gibt es etwas geeigneteres?

Wie funktioniert das mit der Adressierung? Jeder PC hat eine IP-Adresse. Bekommen das Server- und Clientprogramm eine zusätzliche IP Adresse? Wenn ja, woher?

Danke, Thomas
  Mit Zitat antworten Zitat
zeras

Registriert seit: 11. Mär 2007
Ort: Saalkreis
1.618 Beiträge
 
Delphi 12 Athens
 
#2

AW: Anfängerfrage Server - Client

  Alt 16. Sep 2017, 14:28
Wie funktioniert das mit der Adressierung? Jeder PC hat eine IP-Adresse. Bekommen das Server- und Clientprogramm eine zusätzliche IP Adresse? Wenn ja, woher?
Die Rechner benötigen in der Regel keine neue IP. Wichtig sind die Ports, über die kommuniziert wird. Diese musst du einstellen, damit sich die Rechner finden. Weiterhin wichtig ist die Firewall, wenn du eine auf den Rechner installiert hast. Wenn diese die Ports nicht freigeben, hast du auch keine Kommunikation.
Ich meine, es gab da mal Beispiele. Aber wo die liegen, weiß ich im Moment nicht.
Matthias
Es ist nie falsch das Richtige zu tun!
- Mark Twain
  Mit Zitat antworten Zitat
iphi

Registriert seit: 13. Feb 2009
262 Beiträge
 
Delphi 7 Personal
 
#3

AW: Anfängerfrage Server - Client

  Alt 16. Sep 2017, 15:13
Danke für die Info.

Ich habe das hier gefunden:
http://www.felix-colibri.com/papers/...ogramming.html
Das ist mit der Unit WinSock programmiert. Bin ich da auf der richtigen Spur?

Ich habe Server und Client mal auf demselben Rechner laufen lassen, da geht das. Die benutzen die IP 127.0.0.1, die hat irgendwie nichts mit der IP meines Rechners zu tun. Warum geht das?
Wenn Server und Client auf unterschiedlichen Rechnern laufen geht es nicht.

Geändert von iphi (16. Sep 2017 um 15:16 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von stahli
stahli

Registriert seit: 26. Nov 2003
Ort: Halle/Saale
4.336 Beiträge
 
Delphi 11 Alexandria
 
#4

AW: Anfängerfrage Server - Client

  Alt 16. Sep 2017, 15:33
Die IP 127.0.0.1 steht für LocalHost.
Wenn Server und Client auf dem selben Rechner laufen, dann funktioniert das.

Wenn der Client auf einem anderen PC läuft, musst Du dort die IP des Server-PC angeben.

Ggf. kann der Server auf LocalHost weiter laufen oder Du musst auch dort die öffentliche IP des Server-PC einstellen.
Wenn Du das tust, kann es sein, dass ein Client auf dem Server-PC selbst sich nicht mehr problemlos verbinden kann (ggf. muss der Router entsprechend konfiguriert werden).
Ich habe da diverse Überraschungen erlebt, die ich aber jetzt auch nicht mehr genau zusammenfassen kann.

Wenn Du eine funktionierende Konfiguration findest, würde ich es dann erst mal dabei belassen und damit weiter arbeiten.


Falls Du Dich weiter damit beschäftigen willst, kannst Du auch mal meinen damaligen Thread anschauen: http://www.delphipraxis.net/190482-s...ockettest.html.
Dort benutze ich nicht blockierende Sockets. Das würde aber mit einem älteren Delphi so nicht verwendbar sein.
Stahli
http://www.StahliSoft.de
---
"Jetzt muss ich seh´n, dass ich kein Denkfehler mach...!?" Dittsche (2004)
  Mit Zitat antworten Zitat
mjustin

Registriert seit: 14. Apr 2008
3.004 Beiträge
 
Delphi 2009 Professional
 
#5

AW: Anfängerfrage Server - Client

  Alt 16. Sep 2017, 16:30
Ich habe Server und Client mal auf demselben Rechner laufen lassen, da geht das. Die benutzen die IP 127.0.0.1, die hat irgendwie nichts mit der IP meines Rechners zu tun. Warum geht das?
Wenn Server und Client auf unterschiedlichen Rechnern laufen geht es nicht.
Damit der Server Verbindungen von aussen (= andere Rechner) annimmt, muss er externe Socketverbindungen annehmen. Dazu gibt es zwei Wege: a) an die IP Adresse des externen Netzwerkadapters binden oder b) an die IP Adresse 0.0.0.0 binden - diese ist "symbolisch" für "alle IPv4 Adressen" (siehe https://de.wikipedia.org/wiki/0.0.0.0).
Daneben ist der Port wichtig, auf dem er Verbindungen annimmt.

Als einfachste TCP Client/Server Komponenten bietet Delphi die Indy TIdTcpClient und TIdTcpServer. Letztere ist multithreaded, d.h. für jede Client-Verbindung läuft auf dem Server ein eigener Thread. Auf Stackoverflow gibt es dazu viele Praxistipps und Lösungen, z.B. https://stackoverflow.com/questions/...server-to-send
Michael Justin
  Mit Zitat antworten Zitat
iphi

Registriert seit: 13. Feb 2009
262 Beiträge
 
Delphi 7 Personal
 
#6

AW: Anfängerfrage Server - Client

  Alt 16. Sep 2017, 18:04
Danke für die vielen Tipps. Da habe ich was zu studieren

Wie finde ich denn heraus, welche Ports auf dem Server-Rechner noch unbenutzt sind?

Ich glaube, ich brauche blockierende Sockets. Auf meinen Server darf immer nur genau einen Client gleichzeitig zugreifen.
  Mit Zitat antworten Zitat
Benutzerbild von stahli
stahli

Registriert seit: 26. Nov 2003
Ort: Halle/Saale
4.336 Beiträge
 
Delphi 11 Alexandria
 
#7

AW: Anfängerfrage Server - Client

  Alt 16. Sep 2017, 18:14
Ich denke, dass man den Port probieren muss und wenn der Start nicht klappt, einen anderen (mein Kenntnisstand soweit).


Blockierend heisst: Der Client fragt den Server und wartet auf Antwort bevor er etwas anderes tun kann.
Während der Wartezeit ist er somit blockiert.
Deshalb realisiert man solche Anfragen ggf. in Threads, damit die Anwendung nicht längere Zeit hängt (insbesondere wenn man Long polling nutzt).

Schau Dir mal die Indys an (wie mjustin vorgeschlagen hat), die nehmen einem einige Arbeit ab.


Im Gegensatz dazu ist die die asynchrone Kommunikation etwas anders organisiert. Man schickt einfach Nachrichten hin und her und wenn eine eintrifft wird sie vom Mainprozess verarbeitet.
Stahli
http://www.StahliSoft.de
---
"Jetzt muss ich seh´n, dass ich kein Denkfehler mach...!?" Dittsche (2004)
  Mit Zitat antworten Zitat
Benutzerbild von scrat1979
scrat1979

Registriert seit: 12. Jan 2007
Ort: Sulzbach a.d. Murr
1.028 Beiträge
 
Delphi 10.4 Sydney
 
#8

AW: Anfängerfrage Server - Client

  Alt 17. Sep 2017, 09:30
Ich habe mich lange mit der Client-Server-Programmierung beschäftigt und bin nahezu verzweifelt. Es gibt eine Vielzahl von Komponenten, alle mit Vor- und Nachteilen. Mit den Indys sowie mit der ICS bin ich leider nicht zurecht gekommen. Die "Erlösung" waren die WebSocket-Komponenten von esegece, auf die ich per Zufall gestoßen bin. Mittlerweile bin ich Besitzer der lizenzierten Version. Nach kurzer Einarbeitung konnte ich mir meine eigenen "Server-Komponenten" ableiten. Angefangen habe ich beim klassichen Chat-Programm. Im Moment sitze ich an einem LAN-fähigen Terminkalender für mein Geschäft. Alles läuft reibungslos. Eventuell wäre das ja ein Anfang und einen Blick wert.
Michael Kübler
  Mit Zitat antworten Zitat
Jumpy

Registriert seit: 9. Dez 2010
Ort: Mönchengladbach
1.733 Beiträge
 
Delphi 6 Enterprise
 
#9

AW: Anfängerfrage Server - Client

  Alt 18. Sep 2017, 08:26
Ich fand seinerzeit dieses Tutorial sehr lehrreich.
Ralph
  Mit Zitat antworten Zitat
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

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 02:39 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