Winsock Error 10035

DrMueller

Erfahrenes Mitglied
Hallo Leute,
ich hoffe ich bin hier im richtigen Forum:
Unser Replikationsprogramm erhält beim Verbinden manchmal den Error-Code 10035. Der Fehler tritt jedoch unregelmässig auf und alles was wir den Kunden raten können ist es erneut zu versuchen, bis es wieder funktioniert.

Ich habe hier bei mir nun eine kleine Testumgebung aufgebaut und da tritt der Fehler IMMER auf, daher wäre es eine gute Möglichkeit, diesem auf den Grund zu gehen resp. eine Lösung zu finden.

Wenn ich das gefundene richtig verstanden habe, erscheint dieser Fehler, wenn der entsprechende Arbeitsplatz noch mit dem Server verbunden ist, dieser jedoch bereits eine neue Anfrage erhält. Sehe ich das soweit richtig?

Die andere Frage ist, wie würdet ihr so was lösen? Augenscheinlich wäre es am einfachsten bei diesem Fehler den Socket manuell zu trennen und dann die Verbindungsprozedur erneut durchzulaufen, doch ist dies so einfach überhaupt möglich?


Ich bedanke mich im Voraus für eventuelle Ideen und Ratschläge.
 

Bratkartoffel

gebratene Kartoffel
Premium-User
Hallo,

habe per Google auf die Schnelle 2 Möglichkeiten gefunden, wie der Fehler auftreten kann:

* You're trying to send a massive amount of information through the socket, so the output buffer of the system becomes full.
* You're trying to send data through the socket to the remotehost, but the remotehost input buffer is full (because its receiving data slower than you're sending it).
(Quelle: http://geekswithblogs.net/lance/archive/2005/07/20/WinsockError10035.aspx)

Weiteres steht auf der angegebenen Seite.

Gruß
BK
 

DrMueller

Erfahrenes Mitglied
Hm ich kapiere nicht ganz:
Wenn ich den Code analysiere (kenne diesen Syntax leider gar nicht), ist alles was er tut den Fehler abzufangen und dann erneut Bytes zu senden.
Scheint mir jedoch gefährlich zu sein, da es bei anhaltendem Fehler ja in einer Endlosschleife ausartet.

Müsste man nicht zuerst irgendwie den Socket clearen oder ähnliches?

Programmiere das Ganze in VB6, daher entgeht mir beim Beispielcode vlt. etwas?
 

sheel

I love Asm
Warum postest du dann nicht in den VB-Bereich?
Dort kann man dir sicher besser helfen.

Aber da Winsocks ja sprachunabhängig sind:
10035 ist WSAEWOULDBLOCK; dh:
das Programm will irgendwas nicht blockierend ausführen, zB
etwas empfangen versuchen obwohl es nichts zu empfangen gibt.

Im Normalfall würde recv warten, bis irgendwas reinkommt; wenn es aber nonblocking sein soll und nichts da ist, kommt dieser Fehler.

Ich weiß ja nicht, bei welcher Funktion es auftritt;
sollte es send oder recv sein, ist es kein Grund den Socket zu schließen.
Das Programm sollte einfach immer wieder probieren (am besten mit etwas Zeit dazwischen); bis es klappt.

PS: oder einfach blockierend lassen, je nach Verwendungszweck

PPS: Du hast ja geschrieben, dass es beim senden auftritt :-(
Das ist ok, das der Fehler ignoriert wird und weitere Versuche folgen.
 
Zuletzt bearbeitet: