TCP internet communication notes
Now that I’ve got that working over the internet, there are many things that this kind of thing can be used for. Most of them are obvious, but a few I’ve had in mind for some time now.
- For an app running on a device, it can download media specific to that device. ie, scaled to fit the resolution.
- A device can be checked for memory and storage space limits and then download media that is optimised for the device to run the app.
- Even for 3D apps, a device can request 3D meshes optimised to run on that device depending on the graphics capabilities. This can be useful for animated meshes with lots of vertices. The server can reduce the size of the mesh and the animation.
- If a device can output in surround sound then audio can requested that supports surround sound.
- Multiplayer games. The server can receive players positions and then send the local information back out to other devices.
- Devices can also send data to the server. This can be for a multitude of reasons. ie. a players profile picture or for audio communication between players.
As you can see from the above, there’s no limit to what a running server can do.
One thing I will have to do soon is to handle brute force attacks on the server. This happens when a DoS (Denial Of Service) attack occurs, which is a deliberate attack in which lots of data is sent to the server continuously. The simple way around this is to have a damn good fast CPU in the server and to record IP’s that are connecting. If an IP is not requesting the usual data and has attempted X amount of times then it goes onto a block list. Each connection attempt will first check the block list and instantly close the connection if that IP is blocked so that no further time is spent processing the connections request. At this current moment in time the Intel Xeon and the latest Intel i7’s have the cores that could handle DoS attacks.
Multiplayer games requires a whole new line of thinking, especially when they’re real time. Band width can be a pain, but there are many ways to get around this. In one of the above notes, I mentioned ‘local’ data. This comes into play when a players device only needs to receive the local updates in the surrounding area. Although the server will handle all players, it will only send each device its local data.
Anyway, that’s me done for now while I think of what to do next.
Any ideas, then get in touch.