|
dev
newsgroups
|
|||||||||||||||||||||||
|
|||||||||||||||||||||||
How to Stop a Listening socket?I'm trying to make a simple little asynchronous socket server. It accepts
connections, reads and writes, but I can't make it gracefully stop listening. listener.listen(1) listener.beginaccept(...) If before anyone has attempted to connect, I try to stop the listener socket, I get nasty errors, which I can trap, but it is not obvious that it has actually stopped or that the asynchronous callback system has been aborted. This should be trivial. What am I missing? rossu wrote:
> I'm trying to make a simple little asynchronous socket server. It accepts I dont know of another way than to call socket.Close() and catch the > connections, reads and writes, but I can't make it gracefully stop listening. > > listener.listen(1) > listener.beginaccept(...) > > If before anyone has attempted to connect, I try to stop the listener > socket, I get nasty errors, which I can trap, but it is not obvious that it > has actually stopped or that the asynchronous callback system has been > aborted. This should be trivial. What am I missing? resulting ObjectDisposedException on EndAccept. hth, Max Hello rossu,
> I'm trying to make a simple little asynchronous socket server. It How are you stopping the Socket? > accepts connections, reads and writes, but I can't make it gracefully > stop listening. > > listener.listen(1) > listener.beginaccept(...) > If before anyone has attempted to connect, I try to stop the listener > socket, I get nasty errors, which I can trap, but it is not obvious > that it has actually stopped or that the asynchronous callback system > has been aborted. This should be trivial. What am I missing? -- Jared Parsons [MSFT] jared***@online.microsoft.com All opinions are my own. All content is provided "AS IS" with no warranties, and confers no rights. listener.close
Show quote "Jared Parsons [MSFT]" wrote: > Hello rossu, > > > I'm trying to make a simple little asynchronous socket server. It > > accepts connections, reads and writes, but I can't make it gracefully > > stop listening. > > > > listener.listen(1) > > listener.beginaccept(...) > > If before anyone has attempted to connect, I try to stop the listener > > socket, I get nasty errors, which I can trap, but it is not obvious > > that it has actually stopped or that the asynchronous callback system > > has been aborted. This should be trivial. What am I missing? > > How are you stopping the Socket? > > -- > Jared Parsons [MSFT] > jared***@online.microsoft.com > All opinions are my own. All content is provided "AS IS" with no warranties, > and confers no rights. > > > Hello rossu,
> listener.close It seems like the option you're looking for here is a way to essentially cancel the BeginAccept() call. Unfortunately that is not implemented for the IAsyncResult pattern. You're best option is to differentiate based on the exception when you call EndAccept. If it's an ObjectDisposed exception that means that you called Close on the listener socket someplace else. Otherwise there was a general issue when someone attempted to connect to the socket. -- Jared Parsons [MSFT] jared***@online.microsoft.com All opinions are my own. All content is provided "AS IS" with no warranties, and confers no rights. |
|||||||||||||||||||||||