[Win32] Network disconnects

Pagina: 1
Acties:

  • Sh0ckTr00per
  • Registratie: Oktober 2003
  • Laatst online: 07-05 22:13
Ik zit met een probleem in een visual foxpro programma, maar wil het iets algemener trekken. Zo af en toe gebeurt het namelijk dat de netwerkverbinding op een computer wegvalt. Op zich niet zo'n probleem, want het komt vanzelf weer terug.

Het probleem is alleen dat het programma een connection handle naar een SQL server heeft, en die handle wordt ongeldig op het moment dat er zich zo'n disconnect voordoet. Als de gebruiker dan probeert op te slaan, of een andere bewerking doet, komt er een mooie melding 'Connectivity error: [Microsoft][ODBC SQL Server Driver][DBNETLIB]ConnectionWrite (send()).'.

Wat heb ik al geprobeerd? Op het moment dat ik de SQL handle benader, kan ik controleren of de server bereikbaar is. Zo niet, dan een melding geven en met een timer pollen tot de server er wel weer is.

Wat wil ik eigenlijk? Ik ben op zoek naar een windows message, zoals 'WM_DEVICECHANGE', dit is een message die windows verstuurt als er bijvoorbeeld een USB drive aangesloten wordt. Dan kan ik namelijk daarop 'binden' zodat op het moment dat dit gebeurt, ik direct actie kan ondernemen in het programma.

Iemand een idee?

  • Brahiewahiewa
  • Registratie: Oktober 2001
  • Laatst online: 30-09-2022

Brahiewahiewa

boelkloedig

Je zou 't kunnen proberen met het Win32_IP4RouteTableEvent

Note: Requires Windows XP

QnJhaGlld2FoaWV3YQ==


  • Sh0ckTr00per
  • Registratie: Oktober 2003
  • Laatst online: 07-05 22:13
Dat is net iets te modern. Zowel client als server zijn Windows 2000.

Maar wel bedankt voor de reactie!

  • riezebosch
  • Registratie: Oktober 2001
  • Laatst online: 04-05 13:09
Kan je zelf niet checken voor het opslaan of de handle nog geldig is? Of anders er een try/catch omheen bouwen?

Canon EOS 400D + 18-55mm F3.5-5.6 + 50mm F1.8 II + 24-105 F4L + 430EX Speedlite + Crumpler Pretty Boy Back Pack


  • MSalters
  • Registratie: Juni 2001
  • Laatst online: 09-04 22:08
IP is een packet-georienteerd netwerk. Je hebt daar "by design" geen informatie over connectie state tussen twee pakketjes. De conclusie is dus dat je altijd foutafhandeling moet doen als je het netwerk gebruikt. Uit efficiency ioverwegingen kun je daarna nog slimme trucs gaan toepassen, maar dat is pas nadat je de foutafhandeling werkend hebt.

Man hopes. Genius creates. Ralph Waldo Emerson
Never worry about theory as long as the machinery does what it's supposed to do. R. A. Heinlein


  • curry684
  • Registratie: Juni 2000
  • Laatst online: 07-05 22:49

curry684

left part of the evil twins

Zoals MSalters zegt is ethernet en de erboven liggende protocollen by design opgezet zoals het nu is. Grote voordeel is juist dat de meeste kortdurende storingen geen gevolgen hebben voor applicaties die een verbinding open hebben staan (MSN en IRC bijvoorbeeld zijn bekende voorbeelden van applicaties waarbij een verbinding vaak een reconnect overleefd). Je zult dus gewoon een retry-mechanisme moeten bouwen om je communicatielayer als je frequent *last* hebt van de disconnects :)

[ Voor 4% gewijzigd door curry684 op 02-05-2005 10:04 ]

Professionele website nodig?

Pagina: 1