Again, it is hard to say exactly what you would do without all of the requirements of the game. Each game will likely have different requirements for its server. Some may require a database, some may not. As Jesper Juhl pointed out, gamedev.net is a good place to start getting ideas.
Maybe this will satisfy your curiosity a bit, though. When you are talking about a server/client architecture, all of the changing data will be going through the server so that it can send it to the other clients. When a client sends the data to the server, the server can easily hold on to it. The server will be an application you write, so you can do anything you want in it. One idea would be to save the information in some sort of struct...
struct remotePlayer
{
Vector2f playerPosition
Color playerColor
int playerPoints
...
};
and then to hold the data for all players, you could have a vector of such structs
std::vector<remotePlayer> myClients;
When a player needs to change in some way, such as move, it would also send the position info to the server and the server would update the corresponding location in the vector. If a player disconnects, there is nothing that would cause the server to spontaneously lose information from its vector right? There is no need for a database or anything like that in this simple example. When a player reconnects, the server can somehow re-associate that player with a location in the vector and send the client all of its information.
This is of course a contrived example just meant to show how a server could work for your example of having 3 people connected and being able to save positions.