Well the best tutorial I've ever seen on socket programming is Beej's Guide. The tutorial is for unix platforms, but converting it to windows usable code is trivial. If you would like some tips on how to make your socket code portable, I can help you with that.
Your webserver will most likely follow this sort of setup:
Code:
MainThread
Initialize sockets
Bind to port 80, and start listening for connections
mainloop:
Block while waiting for connection
Accept new connection
Spawn a new ClientThread, passing it the socket handle
goto mainloop:
ClientThread
read in http request from client
parse request and validate http headers
use HTTP RFC to determine how to handle the client's request
Send client the requested data
close socket connection
return from thread
Most of the work in the above layout is in the part that reads:
parse request and validate http headers
use HTTP RFC to determine how to handle the client's request
That part of your code will be independent on networking, it's just a matter of following the http protocol. Unfortunately the protocol is rather extensive though.