IMHO, socket programming in Java is much easier than in C/C++. You can start learning it from Java tutorial: http://download.oracle.com/javase/tutorial/networking/sockets/
For "basic" C/C++ socket programming, you can learn from "Beej's Guide to Network Programming". It is worth to learn when I was in university :). Then, you may learn about Windows Socket API for next starting point.
To emulate the environment, off course you can use VMs :)