AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Netzwerke TidudpServer "Socket konnte nicht gebunden werden"
Thema durchsuchen
Ansicht
Themen-Optionen

TidudpServer "Socket konnte nicht gebunden werden"

Ein Thema von markusagb · begonnen am 12. Dez 2021 · letzter Beitrag vom 14. Dez 2021
Antwort Antwort
markusagb

Registriert seit: 11. Jun 2018
46 Beiträge
 
#1

TidudpServer "Socket konnte nicht gebunden werden"

  Alt 12. Dez 2021, 14:08
Hallo zusammen,

erst mal einen schönen dritten Advent an Euch.

Ich habe lange rumgesucht, leider kein brauchbares Ergebnis bekommen. Ich empfange mit TidUDPServer (Indy) Daten von einem anderen Programm
(Ich bekomme einen String welcher je nach Inhalt ausgewertet wird).

Solange ich in der "localhost" Umgebung bin, also das andere Programm auf dem gleichen Rechner läuft, funktioniert das super über die
localhost-IP 127.0.0.1 (+egal welcher Port ab 2000). Ich empfange die Daten und alles ist gut.

Wenn aber das andere Programm von dem ich die Daten bekomme von einem anderen Rechner in meinem Home-Netzwerk (Testumgebung) kommt,
und ich eine IP wie 192.168.1.20 (oder egal welche) inkl. egal welcher Port verwende, dann erhalte ich die Fehlermeldung beim Start meiner Anwendung:

"Socket konnte nicht gebunden werden. Adresse und Port werden bereits verwendet"

Aber: wenn ich die IP auf 0.0.0.0 und (egal welcher Port ab 2000) in der Komponente setze, dann bekomme ich vom externen
Rechner meine Daten (da mir der TidUDPServer ALLE IPs mit dem Port abhört. Auch kann ich neben dem localhost meine eigene IP
binden (192.168.1.20), da bekomme ich auch keinen Fehler.

Nun meine Frage: warum kann ich keine IP aus meinem Netzwerk einsetzen?

Facts:
Alle verwendeten Ports auf meinem PC sind frei
Kein weiteres Programm bzw. Dienst blockiert meine Ports
Es betrifft ALLE IP Adressen von 192.168.1.0 bis 192.168.1.255
PC Firewall hat keine Einschränkungen, auch ausgeschaltet gleicher Fehler
Beim Test im Netzwerk unserer Firma = gleiches Problem
Router = Netgear
Modem=FritzBox

Code:
procedure TForm2.UdpConfig;
var
Binding: TIdSocketHandle;
begin
Try
Form1.IdUDPServer1.Bindings.Clear;
Binding:=Form1.IdUDPServer1.Bindings.Add;
Binding.IP:=192.168.1.100;
Binding.Port:=21100;
Form1.IdUDPServer1.DefaultPort:=21100;
Form1.IdUDPServer1.Active:=True;
except
On E:Exception do messagedlg(E.Message,mterror, [mbOK], 0, mbOK);
end;
end;

IP-Version = Id_IPv4
RADStudio 10.1 Delphi
Indy 10

Auch wenn ich die TidUDPServer Komponente direkt konfiguriere und das Binding in der Komponente vorgebe, passiert das Gleiche.
Ich vermute den Fehler bei mir - eventuell habe ich etwas übersehen... am Netzwerk oder den Ports liegt es zu 99% nicht.

Ich komm da jetzt leider nicht mehr weiter und hoffe auf Eure Hilfe.

Danke schon mal!!!

Markus
Miniaturansicht angehängter Grafiken
fehlermeldung.png  

Geändert von markusagb (12. Dez 2021 um 17:55 Uhr)
  Mit Zitat antworten Zitat
mjustin

Registriert seit: 14. Apr 2008
3.006 Beiträge
 
Delphi 2009 Professional
 
#2

AW: TidudpServer "Socket konnte nicht gebunden werden"

  Alt 12. Dez 2021, 23:18
Man kann nur an IP Adressen des Hosts binden auf dem der Server läuft. Man kann nicht an beliebige andere IP Adressen im Netzwerk binden.
Vielleicht ist Text auch noch ein Fehler / unklare Beschreibung.
Da darin zwei Mal die IP 192.168.1.20 genannt, einmal mit und einmal ohne Fehlermeldung.
Michael Justin
  Mit Zitat antworten Zitat
markusagb

Registriert seit: 11. Jun 2018
46 Beiträge
 
#3

AW: TidudpServer "Socket konnte nicht gebunden werden"

  Alt 13. Dez 2021, 01:20
Danke lieber Michael, ich hatte es befürchtet. Sorry für die 192.168.1.20, das ist die Rechner IP vom localhost, die funktioniert natürlich. Danke für den Hinweis.

Wie realisiere ich dann den Empfang von einer IP eines anderen PC im Netzwerk? Gibt es hierfür eine Indy-Componente oder muss ich das für UDP selbst schreiben?

Danke für Deine Antwort, dann muss ich jetzt nicht weiter in meinem Code rumprobieren…

Einen schönen Wochenstart!

Markus
  Mit Zitat antworten Zitat
hhcm

Registriert seit: 12. Feb 2006
Ort: Wegberg
310 Beiträge
 
Delphi 11 Alexandria
 
#4

AW: TidudpServer "Socket konnte nicht gebunden werden"

  Alt 13. Dez 2021, 07:40
Ich scheine die Frage falsch zu verstehen.
Du bindest am "Server" deine IP und den Port. (Die IP muss am "Server" eingerichtet sein)

Der Client schickt zum "Server"

Warum möchtest du eine Fremde IP auf dem Server binden? Mir erschliesst sich der Sinn nicht.
Chris
  Mit Zitat antworten Zitat
markusagb

Registriert seit: 11. Jun 2018
46 Beiträge
 
#5

AW: TidudpServer "Socket konnte nicht gebunden werden"

  Alt 13. Dez 2021, 08:44
Guten Morgen,

ich möchte von der gebundenen IP Daten von einem Programm empfangen (sendet UDP). Deshalb soll der Server den Port dieser IP (anderer PC im Netzwerk) lesen…

Beispiel:

Pc 192.168.1.38 (Programm nicht von mir) >>> UDP Port 21100 >>> Pc 192.168.1.20 mit TidUDPServer der die Daten auswertet

Liebe Grüße!
  Mit Zitat antworten Zitat
hhcm

Registriert seit: 12. Feb 2006
Ort: Wegberg
310 Beiträge
 
Delphi 11 Alexandria
 
#6

AW: TidudpServer "Socket konnte nicht gebunden werden"

  Alt 13. Dez 2021, 09:18
Du kannst von einem Client keine Daten abrufen.
Wenn dein Programm etwas abrufen muss, dann ist es der UDPClient nicht UDPServer.
Der Server macht nur sinn, wenn das sendende Programm den Server anspricht.
Chris
  Mit Zitat antworten Zitat
philipp.hofmann

Registriert seit: 21. Mär 2012
Ort: Hannover
890 Beiträge
 
Delphi 10.4 Sydney
 
#7

AW: TidudpServer "Socket konnte nicht gebunden werden"

  Alt 13. Dez 2021, 12:54
Schau dir mal die Tethering-Demo(s) an (C:\Users\Public\Documents\Embarcadero\Studio\xx.0 \Samples\Object Pascal\RTL\Tethering). Die setzen auch auf Indy auf und macht vielleicht genau das, was du hier suchst.
  Mit Zitat antworten Zitat
markusagb

Registriert seit: 11. Jun 2018
46 Beiträge
 
#8

AW: TidudpServer "Socket konnte nicht gebunden werden"

  Alt 13. Dez 2021, 13:58
Danke vielmals, das sollte helfen! Ich melde mich wenn es funktioniert. Bis dahin allen eine schöne Woche!!
Und nochmals Danke fürs Tipp geben!
  Mit Zitat antworten Zitat
mjustin

Registriert seit: 14. Apr 2008
3.006 Beiträge
 
Delphi 2009 Professional
 
#9

AW: TidudpServer "Socket konnte nicht gebunden werden"

  Alt 14. Dez 2021, 13:57
ich möchte von der gebundenen IP Daten von einem Programm empfangen (sendet UDP). Deshalb soll der Server den Port dieser IP (anderer PC im Netzwerk) lesen…
Tipp: denke bei "Port" einfach an "Hafen". Der Port (Hafen) liegt am Server (Hafenstadt). Man kann Schiffe (Datenpakete) an einen Port senden, dann kommen sie irgendwann dort an. Oder es kommen Schiffe (Daten) am Port an, die irgendwann an einem anderen Port abgesendet wurden... Man kann nicht von einer Hafenstadt (Server A) aus sehen ("lesen"), welche Daten am Port (Hafen) einer anderen Hafenstadt (Server B) aktuell stehen. Man kann nur warten, bis sie in A ankommen.
(Ja, es gibt mehrere Ports an einem Server, aber die sind halt nummeriert und man könnte sie mit Liegeplätzen vergleichen)
Michael Justin
  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 17:35 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