2009-06-18 4 views
2

Hat jemand eine Idee, was einen Fehler 10035 (EWOULDBLOCK) beim Lesen auf einem blockierenden Socket mit einem Timeout verursachen könnte? Dies ist unter Windows XP mit der .NET Framework Version 3.5 Socket-Bibliothek. Ich habe es nie selbst geschafft, aber einer meiner Kollegen bekommt es ständig. Er sendet ziemlich große Datenmengen an ein viel langsameres Gerät und wartet dann auf eine Antwort, die oft einen 10035-Fehler ergibt. Ich frage mich, ob es Probleme mit TCP-Puffern geben könnte, die gefüllt werden, aber in diesem Fall würde ich erwarten, dass der Lesevorgang oder die Zeitzählung abläuft. Der Socket blockiert definitiv, nicht blockierungsfrei.10035 Fehler auf einem blockierenden Socket

Antwort

0

http://www.lancerobinson.net/archive/2005/07/20/WinsockError10035.aspx

Dieser Fehler tritt auf, wenn der Winsock Puffer von dem Client oder Server-Seite voll werden.

+0

Dank David - Das hatte ich gesehen, aber ich bin nicht völlig überzeugt, dass es meine Probleme verursacht. Ich habe versucht, die Puffer zu überschwemmen, indem ich große Datenmengen zwischen zwei Windows-Rechnern sendete, und alles, was passiert, sind die Sendeblöcke oder das Zeitlimit, gibt nie einen 10035-Fehler. Außerdem tritt der Fehler bei einer TCP-Leseoperation auf, bei der es sich um eine ziemlich kleine Datenmenge handeln sollte. Ich denke, es ist Zeit, Wireshark zu entfesseln. –

1

Es scheint, dass der Fehler auftritt, wenn nach einem Timeout bei einem Lesevorgang erneut versucht wird. Nach dem Timeout (10060) sende ich Daten erneut und warte auf eine Antwort. Die Zeitüberschreitung scheint den Socket in den nicht blockierenden Modus zu versetzen, obwohl der Debugger zeigt, dass Blocking im .Net-Socket-Objekt auf true gesetzt ist, und ich bekomme sofort den 10035-Fehler. Wenn ich die Blockierung für den Socket vor dem erneuten Versuch explizit auf "true" festlege, geht der 10035-Fehler verloren. Das sieht wie ein Fehler oder möglicherweise eine Funktion in Winsock oder .Net aus.

+0

https://bugzilla.novell.com/show_bug.cgi?id=599488 –

1

wahrscheinlich ist es ein Mono-Bug. Ich habe es gerade abgefeuert.

https://bugzilla.novell.com/show_bug.cgi?id=599488

+0

+1 für die Einreichung eines Fehlerberichts. Vielen Dank! Ich habe es gerade repariert: http://github.com/mono/mono/comitmit/5df31fb7877cdda9dbe160e7857dafe9428a5216 – Gonzalo

Verwandte Themen