Toon posts:

[VB6]Pingen geblokkeerd

Pagina: 1
Acties:

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Een applicatie dient xml data door te sturen naar een aantal servers, nu kan het voorvallen dat één of meerdere van deze servers niet online is en dus niet bereikbaar. Om timeouts te vermijden ga ik voor het versturen van de data eerst de doel-server pingen om te zien of deze bereikbaar is.
Nu blijkt dat de klant een no-ping-policy heeft ingevoerd en dus dit plannetje waarschijnlijk niet gaat werken.
Is er een manier om er toch achter te komen wanneer een bepaalde ip-adres bereikbaar is zonder te pingen ?

Acties:
  • 0 Henk 'm!

  • Swaptor
  • Registratie: Mei 2003
  • Laatst online: 17-06 07:31

Swaptor

Java Apprentice

- Andere webservice op die servers (laten) zetten die een versienummer oid teruggeeft.
- Telnetten naar de port waar de xml heen moet
- Uitzondering vragen voor jouw toepassing met fundering

Mogelijkheden te over!

Ontdek mij!
Proud NGS member
Stats-mod & forum-dude


Acties:
  • 0 Henk 'm!

  • danslo
  • Registratie: Januari 2003
  • Laatst online: 22:16
Makkelijkste en meest logische lijkt mij om gewoon op basis van die timeouts te concluderen dat die server(s) plat liggen.

Acties:
  • 0 Henk 'm!

  • raptorix
  • Registratie: Februari 2000
  • Laatst online: 17-02-2022
Timeouts ontstaan meestal juist wanneer een server erg druk is en dan wil pingen meestal nog wel lukken, je kan volgens mij gewoon een timeout setten op het XML HTTP object en dan eventueel netjes de exception catchen.

Acties:
  • 0 Henk 'm!

  • leuk_he
  • Registratie: Augustus 2000
  • Laatst online: 15-07 15:35

leuk_he

1. Controleer de kabel!

Timeouts moet je toch afvangen. Je kunt dan uiteraard 1x opnieuw proberen of ipv van ping een pakketje sturen met een kortere timeout. (versie nummer...)

Need more data. We want your specs. Ik ben ook maar dom. anders: forum, ff reggen, ff topic maken
En als je een oplossing hebt gevonden laat het ook ujb ff in dit topic horen.


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Wel het pingen heeft imo het voordeel dat het de snelste manier is en snelheid is iets dat prioriteit heeft.
Het telkens wachten op het aflopen van een timeout zal denk teveel tijd in beslag nemen. Stel bijvoorbeeld dat er telkens 10 servers zijn waarvan nr. 9 de goede online server is, dan moet eerst 8 timeouts gewacht worden tot de data kan verzonden worden.
Aan telnet heb ik nog niet echt gedacht maar ik vrees dat dit vroeg of laat ook zal geblokkeerd worden.

Acties:
  • 0 Henk 'm!

  • truegrit
  • Registratie: Augustus 2004
  • Laatst online: 22-09 09:11
telnet kan je niet blokkeren omdat dat geen special protocol is, maar gewoon rauwe data over een lijn (dus hetzelfde wat je applicatie doet, een socket openen). Met andere woorden, telnet werkt altijd mits je dezelfde poort gebruikt als je VB6 applicatie.

hallo


Acties:
  • 0 Henk 'm!

  • Janoz
  • Registratie: Oktober 2000
  • Laatst online: 23:37

Janoz

Moderator Devschuur®

!litemod

Verwijderd schreef op vrijdag 06 februari 2009 @ 13:51:
Wel het pingen heeft imo het voordeel dat het de snelste manier is en snelheid is iets dat prioriteit heeft.
Het telkens wachten op het aflopen van een timeout zal denk teveel tijd in beslag nemen. Stel bijvoorbeeld dat er telkens 10 servers zijn waarvan nr. 9 de goede online server is, dan moet eerst 8 timeouts gewacht worden tot de data kan verzonden worden.
Aan telnet heb ik nog niet echt gedacht maar ik vrees dat dit vroeg of laat ook zal geblokkeerd worden.
Waarom zou je dat omstebeurt gaan doen?

Ken Thompson's famous line from V6 UNIX is equaly applicable to this post:
'You are not expected to understand this'


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
truegrit schreef op vrijdag 06 februari 2009 @ 14:03:
telnet kan je niet blokkeren omdat dat geen special protocol is, maar gewoon rauwe data over een lijn (dus hetzelfde wat je applicatie doet, een socket openen). Met andere woorden, telnet werkt altijd mits je dezelfde poort gebruikt als je VB6 applicatie.
Ok, dit is handig, lijkt mij dan geen slech idee om dit dan via telnet te gaan doen. Een telnet connectie heeft altijd een poort nodig, ik neem aan dat ik dan gewoon dezelfde poort opgeef als waarlangs de data wordt verstuurd.
Janoz schreef op vrijdag 06 februari 2009 @ 14:05:
[...]

Waarom zou je dat omstebeurt gaan doen?
Heb idd ook al aangedacht om dit via threads te laten gebeuren, maar ik wilde eerst naar een meer eenvoudige oplossing zoeken zonder te grote aanpassingen te doen aan de reeds bestaande applicatie.

Acties:
  • 0 Henk 'm!

  • Janoz
  • Registratie: Oktober 2000
  • Laatst online: 23:37

Janoz

Moderator Devschuur®

!litemod

Verwijderd schreef op vrijdag 06 februari 2009 @ 14:28:
Heb idd ook al aangedacht om dit via threads te laten gebeuren, maar ik wilde eerst naar een meer eenvoudige oplossing zoeken zonder te grote aanpassingen te doen aan de reeds bestaande applicatie.
Als paralleliseren van enkel het versturen van een stuk XML al een dermate impact op de structuur van je applicatie zou betekenen ben ik erg benieuwd wat voor 'structuur' je uberhaupt in de applicatie gebruikt hebt.

Ken Thompson's famous line from V6 UNIX is equaly applicable to this post:
'You are not expected to understand this'


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Janoz schreef op vrijdag 06 februari 2009 @ 14:39:
[...]

Als paralleliseren van enkel het versturen van een stuk XML al een dermate impact op de structuur van je applicatie zou betekenen ben ik erg benieuwd wat voor 'structuur' je uberhaupt in de applicatie gebruikt hebt.
Ik begrijp wat je bedoelt, maar het is eigenlijk iets dat jaren geleden geschreven is door ex-collega's (vandaar VB6). Ik ben niet echt 'into' VB6 dus ga ik ook niks implementeren waarvan ik niet 100% zeker ben dat het niet onverwacht rare dingen gaat doen als het eenmaal bij de klant staat.

Acties:
  • 0 Henk 'm!

Verwijderd

wat maakt het nou uit of je telnet gebruikt, je moet toch verbinding leggen via tcp en of dat nou via telnet of een ander protocol gebeurd. je kan net zo goed timeouts krijgen met telnet, en in het geval dat het goed gaat, leg je 2x een tcp verbinding. en als het fout gaat zit je nog steeds met een socket timeout...

correct me if I'm wrong.

Acties:
  • 0 Henk 'm!

  • Nvidiot
  • Registratie: Mei 2003
  • Laatst online: 03-06 16:38

Nvidiot

notepad!

Kun je niet gewoon de timeout voor die socket wat terugschroeven? 30 seconden is wel erg lang, als het na 2-3 seconden nog niet gelukt is bij server1 meteen server2 proberen?

What a caterpillar calls the end, the rest of the world calls a butterfly. (Lao-Tze)


Acties:
  • 0 Henk 'm!

  • pkouwer
  • Registratie: November 2001
  • Laatst online: 13-09 21:05
Nvidiot schreef op vrijdag 06 februari 2009 @ 19:17:
Kun je niet gewoon de timeout voor die socket wat terugschroeven? 30 seconden is wel erg lang, als het na 2-3 seconden nog niet gelukt is bij server1 meteen server2 proberen?
kun je dit niet uitbreiden met een vervolg. Servers die niet reageren in een soort pool zetten, en als je de hele serie hebt gehad, begin je van voren af aan met de server die offline waren. Dit doe je dan een keertje of drie met bv 5 minuten er tussen. Zo heb je ook minder last als er ergens in het netwerk een kink in de kabel zit.

Acties:
  • 0 Henk 'm!

  • jos707
  • Registratie: December 2000
  • Laatst online: 22-09 09:46
Verwijderd schreef op vrijdag 06 februari 2009 @ 19:11:
wat maakt het nou uit of je telnet gebruikt, je moet toch verbinding leggen via tcp en of dat nou via telnet of een ander protocol gebeurd. je kan net zo goed timeouts krijgen met telnet, en in het geval dat het goed gaat, leg je 2x een tcp verbinding. en als het fout gaat zit je nog steeds met een socket timeout...

correct me if I'm wrong.
Indien een telnet naar de server overeenkomt met het leggen van tcp-verbinding, en dus eigenlijk even snel is om te checken of de verbinding kan worden gelegd, dan heeft het idd geen zin om eerst een telnet verbinding te leggen.
Nvidiot schreef op vrijdag 06 februari 2009 @ 19:17:
Kun je niet gewoon de timeout voor die socket wat terugschroeven? 30 seconden is wel erg lang, als het na 2-3 seconden nog niet gelukt is bij server1 meteen server2 proberen?
De timeout staat niet op 10 sec, hoe kan je eigenlijk bepalen hoe hoog/laag de timeout moet staan?

Acties:
  • 0 Henk 'm!

  • farlane
  • Registratie: Maart 2000
  • Laatst online: 20:04
jos707 schreef op zaterdag 07 februari 2009 @ 05:34:
De timeout staat niet op 10 sec, hoe kan je eigenlijk bepalen hoe hoog/laag de timeout moet staan?
Dat kan niet met het standaard Winsock ding, een connect timeout is alleen te bouwen als je non-blocking sockets gebruikt. ( recv en send timeout kun je met de setsockopt API instellen )

[btw]
Als je de standaard tcp timeout te lang vindt, moet je je wel afvragen of je wel het juiste protcol gebruikt.

[ Voor 13% gewijzigd door farlane op 07-02-2009 13:30 ]

Somniferous whisperings of scarlet fields. Sleep calling me and in my dreams i wander. My reality is abandoned (I traverse afar). Not a care if I never everwake.

Pagina: 1