[VB6] 40006 Winsock error

Pagina: 1
Acties:
  • 182 views sinds 30-01-2008
  • Reageer

  • Jabbah
  • Registratie: Februari 2004
  • Laatst online: 28-04 16:06
Ik zit met het volgende probleem:
In het bedrijf waar ik werk ontwikkelen we een software pakket. Dit pakket draait bij onze klanten. Middels dit pakket kunnen er zgn database updates gedownload worden vanaf de website. Dit gaat bij bijna iedereen goed, op een paar klanten na. Deze krijgen de volgende foutmelding:
Run-time error: 40006
"Wrong protocol or connection state for the requested transaction or request."
Het downloaden gebeurt via de WinSock control.

Na wat zoekacties ben ik erachter gekomen waarom deze fout kan optreden.
1. De SendData() methode wordt aangeroepen voordat er een succesvolle connectie is gemaakt.
2. Er wordt een connectie gemaakt terwijl er al een connectie open is.

Beide gevallen worden in de code afgevangen. Geval 1 middels de Winsock_Connect event die wordt aangeroepen nadat de connectie is gemaakt. In dit event wordt de SendData methode pas aangeroepen.
Geval 2 wordt afgevangen door voordat er een connectie wordt gemaakt, eerst de huidige connectie (if any) te sluiten.

Op de PC's op het werk is het probleem niet reproduceerbaar. Alleen bij een paar klanten (winXP).
Vreemde is dat het bij deze klanten wel gewerkt heeft tot ongeveer een maand geleden. Er is niets gewijzigd in de software zelf.

Men heeft al geprobeerd om de firewall uit te schakelen, maar de fout bleef.

Iemand enig idee wat hier aan de hand kan zijn?

Verwijderd

Dit zou een bugje in WinSock kunnen zijn, want andere mensen hebben er ook last van, zie http://www.vbip.com/forum/topic.asp?id=5548 en op de MS site:
A Winsock control may fire a DataArrival event with valid data length (a number that is greater than 0) after the Close event. If you try to call the GetData method for that event, you receive the following error message:
Run-time error: 40006

Wrong protocol or connection state for the requested transaction or request.
Deze bug zou gefixt moeten zijn in Visual Studio 6 SP 6.

Als dit het niet oplost zal je toch wat code moeten gaan posten, want anders blijft het gokken.

  • farlane
  • Registratie: Maart 2000
  • Laatst online: 15:31
De gevallen worden kennelijk niet goed afgevangen:

1 In Connect event kan de verbinding inmiddels alweer weg zijn. Check voor SendData altijd de state.
2 Een verbinding kan alleen geopend worden als hij dicht is en andersom, dat klopt als een bus. Er bestaan echter ook states als connecting/open en disconnecting/closing. Tijdens die states kun je niet openen en ook niet closen bv

Het grootste probleem bij het bouwen van robuuste TCP/IP comms is het asynchrone character ervan. En die gaan niet weg door het Winsock component. :) .

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.


Verwijderd

Wellicht kan jou het programmaatje winsockfix hiermee helpen. Te downloaden op http://aaronserv.dyndns.org/downloads/winsockfix/

  • Chilly_Willy
  • Registratie: April 2000
  • Laatst online: 23-04 12:16
Bekent probleem.

Download en installeer VB runtime 60 sp6 en MDAC 2.8 SP1

Coïtus ergo sum


  • farlane
  • Registratie: Maart 2000
  • Laatst online: 15:31
Ik heb niet je linktargets doorgelezen maar wth heeft MDAC2.8 met winsock te doen?

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.


  • Chilly_Willy
  • Registratie: April 2000
  • Laatst online: 23-04 12:16
farlane schreef op woensdag 24 augustus 2005 @ 16:17:
[...]


Ik heb niet je linktargets doorgelezen maar wth heeft MDAC2.8 met winsock te doen?
MDAC 2.8sp1 bevat Dbmsgnet.dll en dat is de Winsock Oriented Net Library, vandaar.

Maar die winsockfix van Speedy heeft bij mij ook wel eens geholpen.

Coïtus ergo sum


  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
Waarom zou je uberhaupt moeilijk doen met een Winsock? Waarom gebruik je geen WinHTTP.WinHTTPRequest ofzo?

Hoewel SP6 (en idd ook soms een MDAC update) een boel fixed is de Winsock control IMHO nog steeds een gaar object. Ik vermijd het zoveel mogelijk iig ;)

[ Voor 27% gewijzigd door RobIII op 24-08-2005 16:29 ]

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij

Pagina: 1