AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Netzwerke Delphi Meldung vom Socket - erfolgreich geschlossen
Thema durchsuchen
Ansicht
Themen-Optionen

Meldung vom Socket - erfolgreich geschlossen

Ein Thema von Harry M. · begonnen am 9. Mär 2005 · letzter Beitrag vom 10. Mär 2005
Antwort Antwort
Benutzerbild von Harry M.
Harry M.

Registriert seit: 29. Okt 2004
Ort: Halle
462 Beiträge
 
#1

Meldung vom Socket - erfolgreich geschlossen

  Alt 9. Mär 2005, 23:47
hallo zusammen

ich habe da was mit den socket programmiert. die anwendung läuft einwandfrei.... nur manchmal kommt die meldung "die verbindung wurde erfolgreich geschlossen" eine solche meldung habe ich aber nicht in das programm aufgenommen und es kommt auch nicht immer wenn ich die verbindung beende. eben nur manchmal... weiß jemand woran das liegt?? try except habe ich schon "eingebunden". die meldung kommt aber trozdem. meiner aufffasung nach deshalb weil es ja in engerem sinne kein fehler ist... den ich abfangen will sondern eben nur eine meldung. und wie kann ich solche meldungen unterdrücken??

gruß delphicus
Harry
Gruß Harry
www.H-Soft.info
  Mit Zitat antworten Zitat
Benutzerbild von Binärbaum
Binärbaum

Registriert seit: 19. Jan 2005
Ort: Elstra
764 Beiträge
 
Delphi 7 Enterprise
 
#2

Re: Meldung vom Socket - erfolgreich geschlossen

  Alt 9. Mär 2005, 23:50
Dazu könntest du ruhig mal den relevanten (!) Code-Abschnitt zeigen, damit man sehen kann, wie die Verbindung beendet wird und wo der Fehler liegen könnte.

MfG
Binärbaum
There are exactly 10 kinds of people: those who understand binary, and those who don't.
---
"Software reift beim Kunden. Bei Hardware ist es anders: Hardware fault beim Kunden." - Rainer G. Spallek
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#3

Re: Meldung vom Socket - erfolgreich geschlossen

  Alt 9. Mär 2005, 23:54
Das ist eine Exception der Indys. Die Indy entwickler nutzen Exceptions nicht nur wenn Aufrufe fehlgeschlagen sind, sondern auch um erfolgreiche Aufrufe zu signalisieren. Robert Marquardt hat dazu mal was geschrieben. Du kannst diese Exception unterdrücken in dem du in den Debugger Optionen bei den Sprachexeptions die entsprechend Exception aufnimmst bei den zu irgnorirenden Exceptions. such einfach mal im Forum nach Hier im Forum suchendie verbindung wurde erfolgreich geschlossen.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Benutzerbild von Harry M.
Harry M.

Registriert seit: 29. Okt 2004
Ort: Halle
462 Beiträge
 
#4

Re: Meldung vom Socket - erfolgreich geschlossen

  Alt 10. Mär 2005, 00:26
hier mal nen bisschen code. ich hatte oben darauf verzichtet, weil die anwendung ja eigendlich läuft....
Delphi-Quellcode:

    Try
      ClientSocket1.Open;
      ClientSocket1.Socket.SendText(TimeToStr(TIME)+' '+TEMPSTR);
      ClientSocket1.Close;
      except
    end;
luckie wird die meldung auch dann unterdrückt wenn das programm nicht im debugger läuft? ich gehe erstmal auf die suche nach "verbindung wurde erfolgreich geschlossen"

& danke für die schnellen antworten
Harry
Gruß Harry
www.H-Soft.info
  Mit Zitat antworten Zitat
fisherman_b

Registriert seit: 4. Mär 2005
Ort: Aachen
21 Beiträge
 
RAD-Studio 2009 Arc
 
#5

Re: Meldung vom Socket - erfolgreich geschlossen

  Alt 10. Mär 2005, 09:28
In der zu den Indy Komponenten gehörenden Unit IdExceptions kannst Du nachschauen, welche unterschiedlichen Exceptions es dort gibt, und in Deinem Programm könntest Du mit diesem Wissen gezielt auf ein Eintreten der Exceptions reagieren.

EIdConnClosedGracefully is raised when remote side closes connection normally
EIdConnClosedGracefully = class(EIdSilentException);

Bei einer Exception handelt es sich nicht immer um einen Fehler, sondern eben um eine Ausnahmesituation, so auch im Falle der Exception EIdCOnnectionCLosedGracefully.

Generell kann man natürlich jede Exception selber überwachen:

Delphi-Quellcode:

try
  ClientSocket1.Open;
  ClientSocket1.Socket.SendText(TimeToStr(TIME)+' '+TEMPSTR);
  ClientSocket1.Close;
except
  on EIdConnClosedGracefully do
    begin
      // Hier kannst Du was mit der Exception anstellen, ohne dass sie automatisch angezeigt wird
    end;
  on EIdNotConnected do
    begin
      // Hier ebenfalls
    end;
end;
Gruss,

Bernhard
  Mit Zitat antworten Zitat
Muetze1
(Gast)

n/a Beiträge
 
#6

Re: Meldung vom Socket - erfolgreich geschlossen

  Alt 10. Mär 2005, 10:08
Moin!

Wie kommt ihr nur alle auf die Indy Komponenten? ClientSocket1 sieht für mich eher nach einer TClientSocket Instanz aus. Diese kann man noch so oft in einem Try/Except Block packen, das bringt meist nix, da der Socket in einem Thread läuft und somit auch die Exceptions unsynchron auftreten. Dafür hat der TClientSocket auch extra ein OnError Event um mit Exception umgehen zu können und diese auch zu unterdrücken (ErrorCode auf 0 setzen, siehe Hilfe).

Auch ist es so falsch programmiert in dem Beispiel. Wenn man die Methode Open aufruft, dann fängt der Socket an sich zu verbinden und versucht eine Verbindung aufzubauen - dieses wird aber in dem Thread erledigt und daher passiert das unsynchron zum VCL Hauptthread und somti wird danach SendText() aufgerufen obwohl er vielleicht noch beim verbinden ist. Es gibt extra ein OnConnect bzw. ein OnClientConnect um zu signalisieren wann die Verbindung aufgebaut wurde. Ein solches lineares aufrufen wie in dem Beispiel ist völliger Blödsinn und klappt meistens nur, wenn Client und Server auf dem lokalen Rechner laufen, dieser schnell genug ist und nicht ausgelastet. Selbst bei 2 Rechnern im lokalen LAN haut dies vielleicht öfters noch hin, aber es gibt keine Garantie. Über das Internet bzw. VPN oder ein anderes WAN haut der Code garantiert nicht mehr hin...

MfG
Muetze1
  Mit Zitat antworten Zitat
fisherman_b

Registriert seit: 4. Mär 2005
Ort: Aachen
21 Beiträge
 
RAD-Studio 2009 Arc
 
#7

Re: Meldung vom Socket - erfolgreich geschlossen

  Alt 10. Mär 2005, 10:28
Mensch... stimmt. Da bin ich wohl zu vorschnell auf den Indy-Zug aufgesprungen.
  Mit Zitat antworten Zitat
Benutzerbild von Harry M.
Harry M.

Registriert seit: 29. Okt 2004
Ort: Halle
462 Beiträge
 
#8

Re: Meldung vom Socket - erfolgreich geschlossen

  Alt 10. Mär 2005, 18:43
ich habe jetzt das
Code:
ClientSocket1.Socket.SendText(TimeToStr(TIME)+' '+TEMPSTR);
ClientSocket1.Close;
in das ClientSocketConnect-Ereignis gepackt mal sehen ob es jetz geht.
Harry
Gruß Harry
www.H-Soft.info
  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 08: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