Please note the question is about using an asynchronous callback mode only on sockets!
I want to build a TCP client that will notify me when a packet is received and when i the socket is being closed,because the feautures that NET offers with beginRecv,endRecv doesn't inform if the connection is still available.
My question: Isn't there a way to create a TCP client much like using WinAPI?
I mean calling WSAAsyncSelect with a message,when the message is received it calls the function you've called in WSAAsyncSelect and then you can see whether the connection is closed or there's a new packet through the WParams FD_CLOSE FD_READ FD_WRITE.
If there isn't.Can't I control my connection and my incoming packets at the same time? I don't want to call BeginRecv EndRecv all the time. -.-
Thanks in advance!
If you pass a state object which includes a reference to your socket, You'll have access to the socket itself.
Your question is not really clear. By the tone of your question, it seems like you don't want to do any extra work. You can't do async without some extra work.
The best approach is to use the Asynchronous API from Microsoft, using BeginReceive/EndReceive. These will call your callbacks when the socket is closed. However, you cannot easily use the IO Stream support in .NET by doing this, so there is some extra work involved.
If you want more control, you have to do more work. That's all there is to it.
You could also write a simple threaded version to monitor the socket and give you the events and call the callbacks.
Server type code
Simple Socket code