I want to write an application for Android, a card game that can be played both locally and online. That means we have clients (Android phones), and servers. Ideally, an Android phone should be able to be used as a server and host a game (and play it at the same time). I don’t want to duplicate code between the server and the client.
Here is what I had in mind: having the application contain the server part, that would be runnable indepently by the application itself, or without the application (on a computer).
In a local game, a thread would be run for the server, and another one for the client (which communicates with the local server through localhost). In an online game, a distant server is running, and the local client communicates with it through the network.
My questions are:
- Will my application be able to communicate with a thread that comes from itself, through localhost?
- Can I have the entire application as the server? On the phone, it would run the server thread, then the client thread (do I need one?). On the distant server (desktop computer), I would run only the server thread, without all the Android stuff.
- Do you have an other idea?
I hope I have been clear enough for you to understand the problem.
Thanking you in advance.
Yes, your app could communicate with itself through TCP sockets, that shouldn’t be a problem. I’d advise you to take a look at putting most of the server functionality into a jar file, then you would have an Android APK and potentially a separate Java frontend for your desktop. You will likely need to have a little hosting code that’s specific to each platform. It might make sense to put your server in an Android
Servicefor example if you want to be able to host in the background.