Hi,
You don't need to derive a class but that's up to you. I would suggest you have a full understanding of sockets (blocking, synchronous, asychronous) before you go on. Because of your initial question I'm assuming you don't have a very good understanding of sockets and you'll end up spending lots of time trying to figure out what's going on with your code. Trouble shooting sockets code isn't very easy even when you know what you're doing.
But if you wish to proceed... you can do this many ways.
One: Create two threads. One to receive and one to send.
Two: Use one thread and check receive and send in the same thread. This means you'll need to make sure your socket is non blocking and check for WSAWOULDBLOCK when you receive. You'll also need to set a flag when you've put data in the buffer to send or have another way to signal that data is ready to send.
Three: Create event driven sockets.
Have fun,
Brother C