Re: How to do Async TCP Listener?
From: Michael D. Ober (obermd._at_.alum.mit.edu.nospam)
Date: 11/21/04
- Next message: Bob: "Re: ANN: WinFX SDK Preview"
- Previous message: mef526: "Re: Reference dynamically created control by name"
- In reply to: Terry Olsen: "How to do Async TCP Listener?"
- Next in thread: Terry Olsen: "Re: How to do Async TCP Listener?"
- Reply: Terry Olsen: "Re: How to do Async TCP Listener?"
- Messages sorted by: [ date ] [ thread ]
Date: Sat, 20 Nov 2004 21:32:22 -0700
I suspect your listening socket is a "blocking" socket (not always obvious)
that the OS is running in an internal thread for you. If so, your client
socket that is created during the accept function will also be blocking. To
fix this, issue a socket ioctl call to the new client socket immediately
after the accept to switch it from blocking to non-blocking.
Mike Ober.
"Terry Olsen" <tolsen64@hotmail.com> wrote in message
news:O3agqD4zEHA.3336@TK2MSFTNGP11.phx.gbl...
> I've tried the following code straight out of MSDN. But my app still
blocks
> while listening. Isn't this code supposed to keep the UI responsive while
> listening? Or maybe I'm not doing it right.... any help is begged for
;-)
>
> Public Class Listener
>
> Public Event Connected(ByVal client As TcpClient)
> Public ClientConnected As New ManualResetEvent(False)
>
> Public Sub DoBeginAcceptTcpClient()
> Dim myListener As New TcpListener(IPAddress.Parse("127.0.0.1"),
23)
> myListener.Start()
> ClientConnected.Reset()
> myListener.BeginAcceptTcpClient(New AsyncCallback(AddressOf
> DoAcceptTcpClientCallback), myListener)
> ClientConnected.WaitOne()
> End Sub
>
> Public Sub DoAcceptTcpClientCallback(ByVal ar As IAsyncResult)
> Dim myListener As TcpListener = CType(ar.AsyncState, TcpListener)
> Dim client As TcpClient = myListener.EndAcceptTcpClient(ar)
> RaiseEvent Connected(client)
> ClientConnected.Set()
> End Sub
>
> End Class
>
>
- Next message: Bob: "Re: ANN: WinFX SDK Preview"
- Previous message: mef526: "Re: Reference dynamically created control by name"
- In reply to: Terry Olsen: "How to do Async TCP Listener?"
- Next in thread: Terry Olsen: "Re: How to do Async TCP Listener?"
- Reply: Terry Olsen: "Re: How to do Async TCP Listener?"
- Messages sorted by: [ date ] [ thread ]
Relevant Pages
|