AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Netzwerke Indy UDP: Nichts kommt an, Socket-Fehler oben drauf.
Thema durchsuchen
Ansicht
Themen-Optionen

Indy UDP: Nichts kommt an, Socket-Fehler oben drauf.

Ein Thema von Medium · begonnen am 29. Aug 2011 · letzter Beitrag vom 29. Aug 2011
Antwort Antwort
Medium

Registriert seit: 23. Jan 2008
3.686 Beiträge
 
Delphi 2007 Enterprise
 
#1

Indy UDP: Nichts kommt an, Socket-Fehler oben drauf.

  Alt 29. Aug 2011, 11:44
Tach zusammen.
Da bisher keine Antworten da sind, traue ich mich mal die ursprüngliche Fragestellung zu ändern, da das eigentliche Problem wohl viel grundsätzlicher ist.
Ich nutze TidUDPClient und -Server für eine Suche meiner beiden Applikationen im LAN.
Problem 1: Der Server landet nie im UDPRead-Event, ergo kommt nichts bei ihm an.
Problem 2: Wenn ich statt eines Broadcasts direkt an eine IP sende (mit dem Client), wird das im UDPClient.ReceiveString() mit einem Socket Error 10054 "Connection closed by peer" quittiert, statt dass ich einfach auf den Timeout laufe.

Ich vermute hier also eher ein Problem mit meinem Client, bin aber was die Indys angeht noch recht grün hinter den Ohren, und hänge an dem Quatsch nun schon den gesamten Vormittag fest

Client-Applikation hat eine TidUDPClient auf dem Formular, und ich mache dort folgendes:
Delphi-Quellcode:
var
  ip, reply: string;
  i, port: Integer;
begin
  i := 1;
  repeat
    if Odd(i) then
    begin
      lblStatus.Caption := 'Versuch '+IntToStr(i)+' (LAN)';
      UDPClient.Broadcast(UDP_Server_Req_Ident, UDP_Server_Req_Port);
      reply := UDPClient.ReceiveString(ip, port, 1000);
    end
    else
    begin
      lblStatus.Caption := 'Versuch '+IntToStr(i div 2)+' (lokal)';
      UDPClient.Send('127.0.0.1', UDP_Server_Req_Port, UDP_Server_Req_Ident);
      reply := UDPClient.ReceiveString(ip, port, 1000);
    end;
    inc(i);
  until ((ip<>'') and (port<>0) and (copy(reply, 1, pos('|', reply)-1)=UDP_Server_Answer_Ident)) or (i>10);
Das ReceiveString() nach dem Broadcast läuft wie erwartet auf den Timeout, alles gut. Der Server läuft lokal, dürfte also via Broadcast auch nicht erreicht werden. Das nach dem Send() jedoch führt zu o.g. Fehler, und der Server sieht von diesem Paket auch nüscht. Firewall ist aus, und eine TCP Verbindung im selben Programm an anderer Stelle tut klaglos, auch zwischen Programmen auf gemeinsamem Host. Was mache ich hier verkehrt? In den ganzen Tutorials sah das alles nicht unähnlich aus, so dass ich im Moment ziemlich ratlos bin. Auch Ersetzen der localhost IP mit der tatsächlichen IP des Rechners brachte keinerlei Änderung.
Danke euch schonmal!
"When one person suffers from a delusion, it is called insanity. When a million people suffer from a delusion, it is called religion." (Richard Dawkins)

Geändert von Medium (29. Aug 2011 um 13:47 Uhr)
  Mit Zitat antworten Zitat
Medium

Registriert seit: 23. Jan 2008
3.686 Beiträge
 
Delphi 2007 Enterprise
 
#2

AW: Indy UDP: Nichts kommt an, Socket-Fehler oben drauf.

  Alt 29. Aug 2011, 13:48
Ich push das mal verfrüht hoch, da sich die Fragestellung geändert hat, wodurch das im Grunde ein neuer Thread ist. Die alte Frage ist damit erstmal obsolet (und auch weg ).
"When one person suffers from a delusion, it is called insanity. When a million people suffer from a delusion, it is called religion." (Richard Dawkins)
  Mit Zitat antworten Zitat
Medium

Registriert seit: 23. Jan 2008
3.686 Beiträge
 
Delphi 2007 Enterprise
 
#3

AW: Indy UDP: Nichts kommt an, Socket-Fehler oben drauf.

  Alt 29. Aug 2011, 14:55
Großer Witz mal wieder. Test-Server erstellt, mit dem ging es dann, danach einfach die UDP Server Kompo aus dem eigentlichen Programm entfernt, einfach wieder neu aufs Formular gepackt, die selbe Read-Methode angehängt, und natürlich gehts. Oh sowas mag ich ja! Und ich finde mich sogar über den Broadcast, so dass ich den Horst garnicht bemühen muss.
Danke für's nicht Hauen für diesen eher sinnfreien Thread!
"When one person suffers from a delusion, it is called insanity. When a million people suffer from a delusion, it is called religion." (Richard Dawkins)
  Mit Zitat antworten Zitat
Benutzerbild von ChrisE
ChrisE

Registriert seit: 15. Feb 2006
Ort: Hechingen
504 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#4

AW: Indy UDP: Nichts kommt an, Socket-Fehler oben drauf.

  Alt 29. Aug 2011, 15:30
Hallo Medium,

nur ganz kurz - der Port 1000 aus Deinem Beispiel gehört aber zu den "Well known ports. Ich würde Portnummern für eigene Zwecke empfehlen, die mindest oberhalb von Port 1023 sind - wenn nicht sogar oberhalb von Port 49151 (Registered Ports).

Gruß, Chris

EDIT: Asche auf mein Haupt - ich hab die 1000 falsch gelesen - einfach ignorieren - Sorry
Christian E.
Es gibt 10 Arten von Menschen, die die Binär lesen können und die die es nicht können

Delphi programming rules

Geändert von ChrisE (29. Aug 2011 um 15:41 Uhr) Grund: Parameter von ReceiveString verwechselt...
  Mit Zitat antworten Zitat
Medium

Registriert seit: 23. Jan 2008
3.686 Beiträge
 
Delphi 2007 Enterprise
 
#5

AW: Indy UDP: Nichts kommt an, Socket-Fehler oben drauf.

  Alt 29. Aug 2011, 16:14
Dennoch ein guter Hinweis! Die 1023 hatte ich noch im Hinterkopf, die registrierten allerdings nicht. Da bin ich doch gleich mal spontan von den 30000ern in >52000 gewechselt. Sicher ist sicher. Danke!
"When one person suffers from a delusion, it is called insanity. When a million people suffer from a delusion, it is called religion." (Richard Dawkins)
  Mit Zitat antworten Zitat
Benutzerbild von ChrisE
ChrisE

Registriert seit: 15. Feb 2006
Ort: Hechingen
504 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#6

AW: Indy UDP: Nichts kommt an, Socket-Fehler oben drauf.

  Alt 29. Aug 2011, 16:21
Dann hatte ja mein Fehler doch etwas gutes

Gruß, Chris
Christian E.
Es gibt 10 Arten von Menschen, die die Binär lesen können und die die es nicht können

Delphi programming rules
  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 21:16 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