So I've been interested in networks since I started a job working underneath a network admin, and programming network applications sounds fun. Though I'm not sure how to get into it; I know languages like Java and Python are supposedly pretty easy to start with for this, but I don't particularly enjoy Java and I've never used Python. Just read some Python code before. It would be cool to do in C++, but I'm not sure what library support is like. So, for all you who have done any network programming, how did you get started? I'm also open to low-level APIs.
The low-level library typically used is the BSD socket library, but it's horrible. If you want to learn it, take a look at http://beej.us/guide/bgnet/. It's a bad tutorial IMO but it's the most recommended one that I know of. You could wrap it up in a class if you wanted to make it usable and OO style.
Python's basal networking library, the socket module, is more or less the same as BSD sockets without some of the things that make it horrible. It's very easy to use, actually. Perl has an okay networking library.
If you savour your sanity, you could use SFML's Network package. It's similar in easiness to C#'s networking classes (and therefore Java's, I assume).
Aside from playing with cURL briefly I haven't done any "network programming" in c++, but have done a little in c# and java. Take a look at c#, .net makes this kind of stuff pretty easy. But if you insist on c++ you should probably look at boost. Also the phrase "network programming" is kind of obscure, do you want to add network capabilities to an app, write a tool to aid in network maintenance, etc?
Well I do have an idea I'd like to do eventually, though I'm sure it's probably already done.
I want to write up an app that will connect to a server (probably at my house) that houses all my log in information for various websites and services. This way I could have stronger passwords (ie just a bunch of random characters) for all services without having to remember them. Of course there would need to be some encryption (SSL, I don't know, I know very little with the application layer. I work with layers 2 and 3 at work) and authentication. But if I get this up and going and it works well, I'd eventually like to port to and iOS and/or Android so it would be available wherever you are.
But I need to learn about how programming works in general with network apps first, hence this thread :P
EDIT: Program I'd look at making is similar to what we use where I work actually. http://keepass.info/
Though I feel like doing it myself (I think it would look cool on my resume) and I want to get it on mobile devices.
EDIT2: Bullocks, Keepass already has a mobile version -_- I guess there is no such thing as new ideas in the world of computing anymore.
I've written quite a few networking libraries to tailor custom needs in both C++ and Java. As far as C++ goes, I wouldn't use any other library other than asio (header-only, or the boost flavor). With Java, their standard library seems to provide the basic building blocks, but for more scalable applications, you'd need to build your own framework using the standard objects. If you need a hand getting a project off the ground, let me know and I'll try my best to help out.