Books & Libraries

Started by
4 comments, last by hplus0603 9 years, 8 months ago

I've been through one book fully of C++, I didn't find it to be very helpful for a beginner at the time, I was very confused with a lot of the material, kind of set me back a bit, especially containers, file I/O, etc. On my second book, relearning stuff that I was confused about and little bits of information that I never knew before. I feel I've become better at C++ even though I've only been doing it for a few years.

Anyway, I'm mainly wanting to work on games, but it's always good to learn about other stuff besides games and how they work. Now, networking is something I've not delved into yet, it's always been in the back of my mind and when I should learn a bit about it.

I was just wondering which books you would recommend learning from about network programming, networking in general and maybe a good library for C++ to use. I've just thought about working on an Instant Messenger program and wouldn't even know where to start.

Advertisement

Good networking book: TCP/IP Illustrated, by Stevens

Good distributed simulation (games) book: Networked Virtual Environments, by Singhal et al

Good C++ networking library: boost ASIO, or RakNet (which is now open source!)

enum Bool { True, False, FileNotFound };

Cheers, I had heard about ASIO, but wasn't too sure if it was still widely used. I haven't heard of RakNet.

I have heard people mention WinSock, is that used still, does it accomplish the same things that ASIO or RakNet do?

About the books, are they more practical learning or are they mainly just for reading purposes and not participating in exercises?

I would also like to ask, would be a good idea to learn about servers and setting up a server if I were to start learning about networking?

Another thing I want to mention is that I am currently learning how to use the SFML library, it has a built in Network Module, just wondering if that is also something I should look into. I am using an SFML book at the moment and I am pretty sure it includes network programming in that.

I have heard people mention WinSock, is that used still, does it accomplish the same things that ASIO or RakNet do?


WinSock is the part of Windows that lets you send and receive network data. All the other libraries are built on top of this, to give you a nicer API, and perhaps higher-level functions like serialization, matchmaking and NAT punch-through, etc.
The frustrating part of WinSock is that there are four or five ways to do various things, of which most of them are obsolete, troublesome, and cause bugs, although the most complex is fine (and very complex: OVERLAPPED structs, I/O completion ports, thred pools) and the simplest is also fine (but not easily integrated to a full-blown Windows application: blocking sockets and select().)

I would also like to ask, would be a good idea to learn about servers and setting up a server if I were to start learning about networking?


Understanding how to administer a server is useful. How networking works, at the "machine" level, is needed to properly administer a server, but a server also has many other things to worry about that are not networking.

I am using an SFML book at the moment and I am pretty sure it includes network programming in that.


Sounds like a great start.
enum Bool { True, False, FileNotFound };

Thanks for the info, will definitely pursue into using ASIO in the near future as well as reading those books.

It's something I should consider doing at some point due to how heavily online gaming has become or even social networking involved in games. Very simple things like being able to share high scores across social networking sites, adding friends on mobile games or just general interacting with another players world.

With programs like an instant messenger, it's mainly for learning purposes, but you wouldn't need a server for that would you, or would you have one person lets say, open some sort of lobby that everyone can join, or be invited to.

If you try to get by without any kind of server, you very quickly run into the question of "how can people find each other?"
Servers make things much simpler and more robust in many ways.
enum Bool { True, False, FileNotFound };

This topic is closed to new replies.

Advertisement