Discussion:
TcpListener exception!
(zu alt für eine Antwort)
Dirk Reske
2003-09-25 19:44:17 UTC
Permalink
Hallo,

was sagt mir diese Meldung?

"Ein Blockierungsvorgang wurde durch einen Aufruf von WSACancelBlockingCall
unterbrochen"

woran liegt das?
was kann man dagegen machen?

thx
Mudure Cristian
2003-09-26 07:48:07 UTC
Permalink
Hallo Dirk,

ist ein Netwerkfehler. Kommt, wenn ich mich nicht irre von WinSock.

--
Mudure Cristian
mcsd, mcdba
Post by Dirk Reske
Hallo,
was sagt mir diese Meldung?
"Ein Blockierungsvorgang wurde durch einen Aufruf von
WSACancelBlockingCall
Post by Dirk Reske
unterbrochen"
woran liegt das?
was kann man dagegen machen?
thx
Stefan Ille
2003-09-26 09:43:07 UTC
Permalink
Hallo Dirk,
Post by Dirk Reske
Hallo,
was sagt mir diese Meldung?
"Ein Blockierungsvorgang wurde durch einen Aufruf von
WSACancelBlockingCall
Post by Dirk Reske
unterbrochen"
woran liegt das?
was kann man dagegen machen?
Das heißt, daß Dein Aufruf der Art
Socket sAccpeted = myListener.AcceptSocket();
der ein sogenannter blocking call (das heißt, der Thread in dem der
Aufruf erfolgt bleibt so lange an diesem Aufruf stehen, bis sich ein
Client verbindet) ist, abgebrochen wurde. Zum Beispiel dadurch, daß Du
ein Thread.Abort() gegen den Thread mit dem Aufruf ausgeführt hast.
Machen kannst Du dagegen, daß Du den thread eben nicht abbrichst ;-)

HTH
Gruß
Stefan
Dirk Reske
2003-09-26 14:07:52 UTC
Permalink
genau da passiert es bei mir auch!

myListener.Start();
client = myListener.AcceptTcpClient();

aber ich muss den listener doch irgendwie beenden können....
Post by Mudure Cristian
Hallo Dirk,
Post by Dirk Reske
Hallo,
was sagt mir diese Meldung?
"Ein Blockierungsvorgang wurde durch einen Aufruf von
WSACancelBlockingCall
Post by Dirk Reske
unterbrochen"
woran liegt das?
was kann man dagegen machen?
Das heißt, daß Dein Aufruf der Art
Socket sAccpeted = myListener.AcceptSocket();
der ein sogenannter blocking call (das heißt, der Thread in dem der
Aufruf erfolgt bleibt so lange an diesem Aufruf stehen, bis sich ein
Client verbindet) ist, abgebrochen wurde. Zum Beispiel dadurch, daß Du
ein Thread.Abort() gegen den Thread mit dem Aufruf ausgeführt hast.
Machen kannst Du dagegen, daß Du den thread eben nicht abbrichst ;-)
HTH
Gruß
Stefan
Stefan Ille
2003-09-29 10:00:02 UTC
Permalink
Moin Dirk,
Post by Dirk Reske
genau da passiert es bei mir auch!
myListener.Start();
client = myListener.AcceptTcpClient();
aber ich muss den listener doch irgendwie beenden können....
ja, und wo ist das Problem?

myListener.Start();
try
{
client = myListener.AcceptTcpClient();
// mach was mit dem Client
}
catch
{
Console.WriteLine("Listener stopped...");
}

Laß' ihn doch die Exception schmeissen. Fang' sie ab und gut is'.

Gruß
Stefan

Herfried K. Wagner [MVP]
2003-09-26 09:43:06 UTC
Permalink
Hallo Dirk!
Post by Dirk Reske
was sagt mir diese Meldung?
"Ein Blockierungsvorgang wurde durch einen Aufruf von
WSACancelBlockingCall unterbrochen"
Ich kann dazu auch nur sagen, was die MSDN zu 'WSACancelBlockingCall' sagt:

<msdn>
The WSACancelBlockingCall function has been removed in compliance with the
Windows Sockets 2 specification, revision 2.2.0.

The function is not exported directly by the Ws2_32.dll and Windows Sockets
2 applications should not use this function. Windows Sockets 1.1
applications that call this function are still supported through the
Winsock.dll and Wsock32.dll.

Blocking hooks are generally used to keep a single-threaded GUI application
responsive during calls to blocking functions. Instead of using blocking
hooks, an applications should use a separate thread (separate from the main
GUI thread) for network activity.
</msdn>
--
Herfried K. Wagner
MVP · VB Classic, VB.NET
http://www.mvps.org/dotnet
Loading...