Who You Are
This tutorial assumes you are comfortable with the Java language and programming environment, in addition to object-oriented programming in general. This tutorial does not attempt to be a basic language tutorial. You should be thoroughly familiar with the syntax of Java. You should have written simple apps and applets. You should also be comfortable with basic AWT and Swing programming. When you encounter a topic that requires a deeper understanding for network programming than is customary-for instance, threads and streams-I'll cover that topic as well, at least briefly. You should also be an accomplished user of the Internet. I will assume you know how to FTP files and visit web sites. You should know what a URL is and how you locate one. You should know how to write simple HTML and be able to publish a home page that includes Java applets, although you do not need to be a super web designer. However, this tutorial doesn't assume that you have prior experience with network programming. You should find it a complete introduction to networking concepts and network app development. I don't assume that you have a few thousand networking acronyms (TCP, UDP, SMTP, etc.) at the tip of your tongue. You'll learn what you need to know about these here. It's certainly possible that you could use this tutorial as a general introduction to network programming with a socket-like interface, and then go on to learn WSA (the Windows Socket Architecture) and figure out how to write network apps in C++. But it's not clear why you would want to: as I said earlier, Java lets you write very sophisticated apps with ease.