![]() |
TidudpServer "Socket konnte nicht gebunden werden"
Liste der Anhänge anzeigen (Anzahl: 1)
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 |
AW: TidudpServer "Socket konnte nicht gebunden werden"
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. |
AW: TidudpServer "Socket konnte nicht gebunden werden"
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 |
AW: TidudpServer "Socket konnte nicht gebunden werden"
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. |
AW: TidudpServer "Socket konnte nicht gebunden werden"
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! |
AW: TidudpServer "Socket konnte nicht gebunden werden"
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. |
AW: TidudpServer "Socket konnte nicht gebunden werden"
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.
|
AW: TidudpServer "Socket konnte nicht gebunden werden"
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! |
AW: TidudpServer "Socket konnte nicht gebunden werden"
Zitat:
(Ja, es gibt mehrere Ports an einem Server, aber die sind halt nummeriert und man könnte sie mit Liegeplätzen vergleichen) |
Alle Zeitangaben in WEZ +1. Es ist jetzt 03:23 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