Synapse an Domain binden - wie?

Alle Fragen zur Netzwerkkommunikation
Antworten
hydemarie
Beiträge: 23
Registriert: Di 16. Feb 2016, 02:21
OS, Lazarus, FPC: Windows 10 (L 2.0.x FPC 3.0.4)
CPU-Target: 64 Bit

Synapse an Domain binden - wie?

Beitrag von hydemarie »

Ist jetzt wahrscheinlich eine total doofe Frage, aber ich spiele gerade ein wenig mit Synapse herum und sehe mich mit folgendem Problem konfrontiert:

An den localhost sind drei Domains gebunden, nennen wir sie der Einfachheit halber mal "domain1.de", "domain2.de" und "domain3.de". Hoffentlich logischerweise :wink: handelt es sich hierbei nicht um Aliasdomains, mein Programm sollte also nicht unbedingt hinter allen drei Domains das Gleiche tun.

Nun bringt Lauschen auf 0.0.0.0 ja eher nicht so viel.

Code: Alles auswählen

ListenerSocket := TTCPBlockSocket.Create;
// (...)
ListenerSocket.CreateSocket;
ListenerSocket.bind('0.0.0.0','12345');
ListenerSocket.listen;


Wie bringe ich Synapse bei, sich mit verschiedenen Sockets an verschiedene Domains zu hängen?
Aber Delphi ist auch ganz OK.

Socke
Lazarusforum e. V.
Beiträge: 2779
Registriert: Di 22. Jul 2008, 19:27
OS, Lazarus, FPC: Lazarus: SVN; FPC: svn; Win 10/Linux/Raspbian/openSUSE
CPU-Target: 32bit x86 armhf
Wohnort: Köln
Kontaktdaten:

Re: Synapse an Domain binden - wie?

Beitrag von Socke »

hydemarie hat geschrieben:An den localhost sind drei Domains gebunden, nennen wir sie der Einfachheit halber mal "domain1.de", "domain2.de" und "domain3.de". Hoffentlich logischerweise :wink: handelt es sich hierbei nicht um Aliasdomains, mein Programm sollte also nicht unbedingt hinter allen drei Domains das Gleiche tun.

Nun bringt Lauschen auf 0.0.0.0 ja eher nicht so viel

Du kannst ein Socket nur an eine IP-Adresse binden, nicht an eine Domain.

Daraus folgt:
  1. Verweisen alle Domains auf die selbe IP-Adresse, bindest du dich an 0.0.0.0 und wertest den Host-Header aus (sofern du HTTP verwendest.).
  2. Wenn für jede Domain eine IP-Adresse auf deinem Server konfiguriert ist, bindest du das Socket an die jeweilige IP-Adresse. Die IP-Adressen müssen natürlich auch korrekt zu deinem Server geroutet werden (ist bei einem öffentlich gehosteten Server in der Regel der Fall).
MfG Socke
Ein Gedicht braucht keinen Reim//Ich pack’ hier trotzdem einen rein

hydemarie
Beiträge: 23
Registriert: Di 16. Feb 2016, 02:21
OS, Lazarus, FPC: Windows 10 (L 2.0.x FPC 3.0.4)
CPU-Target: 64 Bit

Re: Synapse an Domain binden - wie?

Beitrag von hydemarie »

Socke hat geschrieben:
  1. Verweisen alle Domains auf die selbe IP-Adresse, bindest du dich an 0.0.0.0 und wertest den Host-Header aus (sofern du HTTP verwendest.).


Das könnte das Problem sein.

Der Server hat exakt eine IP und HTTP wird nicht genutzt. :?
Aber Delphi ist auch ganz OK.

Socke
Lazarusforum e. V.
Beiträge: 2779
Registriert: Di 22. Jul 2008, 19:27
OS, Lazarus, FPC: Lazarus: SVN; FPC: svn; Win 10/Linux/Raspbian/openSUSE
CPU-Target: 32bit x86 armhf
Wohnort: Köln
Kontaktdaten:

Re: Synapse an Domain binden - wie?

Beitrag von Socke »

hydemarie hat geschrieben:Der Server hat exakt eine IP und HTTP wird nicht genutzt. :?

Welches Protokoll nutzt du denn? Sofern das Protokoll den gewünschten Hostnamen nicht mitgeben kann, müsstest du es dort einbauen :D
Wenn du Einfluss auf die Clients hast, kannst du die Server auch auf unterschiedlichen Ports lauschen lassen. Dann sind die Domainnamen technisch nicht mehr erforderlich. Sie können dennoch in Zukunft bei einem Hostwechsel der Server weniger Änderungen bei den Clients bedeuten.
MfG Socke
Ein Gedicht braucht keinen Reim//Ich pack’ hier trotzdem einen rein

hydemarie
Beiträge: 23
Registriert: Di 16. Feb 2016, 02:21
OS, Lazarus, FPC: Windows 10 (L 2.0.x FPC 3.0.4)
CPU-Target: 64 Bit

Re: Synapse an Domain binden - wie?

Beitrag von hydemarie »

Socke hat geschrieben:Welches Protokoll nutzt du denn?


Ich implementiere gerade RFC 1436. Das scheint davon auszugehen, dass Domains 1:1 auf IPs gemappt sind, weswegen ich hoffte, da irgendwie eine bequeme Lösung am Protokoll vorbei zu finden. Als hätte ich eine Ahnung, wie Sockets funktionieren. :lol:

Socke hat geschrieben:Wenn du Einfluss auf die Clients hast


Theoretisch ja, praktisch bevorzugen die vorhandenen (und verbreiteten) Clients aber den Standardport.
Aber Delphi ist auch ganz OK.

Antworten