Entwickler-Ecke
Internet / Netzwerk - Indy - trotz erfolgreicher Connection -> exception
JRegier - Di 16.05.06 18:45
Titel: Indy - trotz erfolgreicher Connection -> exception
Hallo, ich habe mir eine PCControl Software erstellt, mit der ich einen PC im Netzwerk per Remote
Runterfahre in Ruhezustand und in StandBy versetzen kann.
Also eine Client und eine Server Anwendung, es funktioniert auch soweit alles, nur ich habe beim
Server eine zurückmeldung mit
Delphi-Quelltext
1:
| WriteLn('Alles klar, Befehl empfangen, wird ausgeführt'); |
und beim Clienten
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14:
| procedure Connect; begin try tcpClient.Connect; except MessageBox(.., 'Konnte nicht connecten',..); end; end;
procedure OnConnect(..) begin SendCmd(..) MessageBox(.., tcpClient.Socket.ReadLn, ); end; |
Also die MessageBox in OnConnect wird nie angezeigt aber in Connect wird immer der except Block ausgeführt obwohl
Commando erfolgreich gesendet und ausgeführt wird.
Wieso wird exception ausgelöst?
skycomnd - Mi 17.05.06 14:22
hallo,
was passiert ohne die msgbox?
mach dein "SendCmd" nach dem connect und nicht während des connects.
gruss
pp
JRegier - Mi 17.05.06 14:46
skycomnd hat folgendes geschrieben: |
hallo,
was passiert ohne die msgbox?
mach dein "SendCmd" nach dem connect und nicht während des connects.
gruss
pp |
Ich habe jetzt mal anstatt SendCmd - WriteLn genommen und direkt danach ReadLn das funktioniert
soweit gut, nur manchmal kamm es wieder.
Aber vieleicht wird ja wegen einem anderen Fehler das exception ausgelöst, ich meine es gibt
ja allein beim Connecten verschiedene Formen von Fehlern.
Ich muß mich mit exceptions mehr befassen, ich habe mal den genauen Grund in einer MessageBox
ausgeben lassen, weiß aber nicht wie das ging, das war bei Java anders.
Aber gibts eine andere procedure außer OnConnect ? Ich denke doch dass da schon Connected ist.
Chughallen - Mi 17.05.06 15:17
Du solltest deine Exception auf jeden Fall mal behandeln, also nicht nur eine Message Box ausgeben, sondern auch die Fehlermeldung, welche in der eigentlichen Exception steht.
TCPconnect kann etliche Excpetions werfen, wie z.B. Port oder IP nicht gesetzt, connection refused, timeout usw.
Die MessageBox ist vollkommen überflüssig, weil fängst du die Exception nicht expliziet ab, dann macht das die Application und die macht genau das, sie gibt dir eine Message Box mit dem Fehler.
Abgesehen davon, benutzt Indy blocking Sockets, deine eigene Prozedur 'Connect' geht also sowieso erst weiter, wenn die Funktion tcpClient.Connect zurückkehrt.
Du kannst also dannach einfach ein:
if tcpClient.Connected = true then
...
machen.
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2026 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!