![]() |
Indy UDP: Nichts kommt an, Socket-Fehler oben drauf.
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:
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.
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); Danke euch schonmal! |
AW: Indy UDP: Nichts kommt an, Socket-Fehler oben drauf.
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 :)).
|
AW: Indy UDP: Nichts kommt an, Socket-Fehler oben drauf.
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! |
AW: Indy UDP: Nichts kommt an, Socket-Fehler oben drauf.
Hallo Medium,
nur ganz kurz - der Port 1000 aus Deinem Beispiel gehört aber zu den ![]() Gruß, Chris EDIT: Asche auf mein Haupt - ich hab die 1000 falsch gelesen - einfach ignorieren - Sorry :-( |
AW: Indy UDP: Nichts kommt an, Socket-Fehler oben drauf.
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!
|
AW: Indy UDP: Nichts kommt an, Socket-Fehler oben drauf.
Dann hatte ja mein Fehler :oops: doch etwas gutes :thumb:
Gruß, Chris |
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:52 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