How do I let multiple consoles share input between one another?

What I’m Trying to Achieve
I’m attempting to build a console game that has multiple console windows that would be displaying inventory, status effects, current map, and health. Another console would be the main one that gathers input to effect the other consoles. The reason I want to do it this way is so that the other consoles can be updating their "graphics" (or text) without disturbing the input flow.

What I’ve Tried So Far
So far, I’ve attempted to use System.IO’s File, FileStream, StreamWriter, and StreamReader to communicate between the consoles via text files. The problem I’ve ran into is that, when the main console (the input console) is attempting to write inputs to a file–which is communicating with another console (the "graphics" console)–it throws an error because the "graphical" console is trying to read the input of the file (or vice versa).

I figured that making the FileStream’s FileAccess be Readable would do the trick, but I ran into the same issue.

I think I could get this to work if I could communicate between the consoles to tell each other that one is done writing to or reading the file… kind of like a back and forth… "I’m writing to the file… okay, I’m done" "I’m reading the file… okay, I’m done" and the cycle continues…

So, in summary, I suppose, my question is how can I communicate between two consoles using files?

Possible Solutions I could try learning SQL, but I don’t know if I’d end up running into the same issue… so, if I must learn SQL for this project, I suppose, that’d be my last option.

Thank you!

>Solution :

IPC (inter process communication) is the keyword you’re looking for.

There are multiple ways to do IPC, e.g. shared memory, named pipes or similar. .NET has an IpcChannel which uses TCP or a named pipe if the destination is on the local PC.

Leave a Reply