Example of IPC in VC++ .Net

Hello all,

I have an assignment to make a board game in VC++ .Net  , I am required to make GUI and create 3 processes Master, player1 and player2....

I have been looking online for IPC and have found some examples but all went over the top of my head....

I would appreciate if someone could give me an example explaining...

create process ( i.e. initialize player1 from master )
pass data ( structure ) to player1
receive feedback from player1
pass data to player2 ( it has already been initialized before i.e after player1)
receive feedback from player2
pass data to player1( what will happen to player1 in the mean time? )

Thanks a lot
hatimadAsked:
Who is Participating?
 
nonubikCommented:
You can create a mutex to synchronize the processes. The first process creates a mutex after it writes to mapped file. The second proces tries to open the mutex. It will only succeed after the mutex was created. See "Using Named Objects" for more info: http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dllproc/base/using_named_objects.asp
0
 
Svetlin_PanayotovCommented:
http://www.codeproject.com/internet/renju.asp
This sample contains at least some base classes that could help you.It's direct connection - but with just few modifications in CListenSocket and CClientSocket you can use it for your game.

Svetlin
0
 
Svetlin_PanayotovCommented:
Oh...and another - from CodeProject again http://www.codeproject.com/internet/WinBattleArticle.asp
0
Cloud Class® Course: MCSA MCSE Windows Server 2012

This course teaches how to install and configure Windows Server 2012 R2.  It is the first step on your path to becoming a Microsoft Certified Solutions Expert (MCSE).

 
nonubikCommented:
IPC does not resume only to socket communications. There are also pipes, mapped files, mailslots, rpc, etc.
A good sample to start is http://www.codeproject.com/threads/ipcworkshop.asp . It explains 5 of the IPCs: clipboard, file mapping, mailslots, named pipes and sockets.
0
 
nonubikCommented:
0
 
hatimadAuthor Commented:
Thanks for your comments, I will go through the links and get back
0
 
hatimadAuthor Commented:
ok,

I tried those links but all of them seems to have one or other problem first 2 are too complicated and almost all has problems compiling on .net 2002.

I found this link

http://msdn.microsoft.com/library/default.asp?url=/library/en-us/fileio/base/creating_named_shared_memory.asp 

which has working example.

But the problem now is, when I try to modify it to use structure, it gives me errors....

could anyone please show me an example with simple structure in it?

like how do I implement this structure insted of text?

struct {
      int MsgNo;
      String Msg;
}

Thank you
0
 
nonubikCommented:
Having

typedef struct _Msg {
      int MsgNo;
      char *Msg;
}MSG;

MSG MyMessage;

//fill it
.....
//first process

CopyMemory((PVOID)pBuf, (void *)&MyMessage, sizeof(MyMessage.MsgNo) + strlen(MyMessage.Msg));


//second process
void *pBuf
 pBuf = MapViewOfFile(hMapFile,    // handle to mapping object
               FILE_MAP_ALL_ACCESS,  // read/write permission
               0,                    
               0,                    
               BUF_SIZE);      

MSG MyMessage;

strncpy(&(MyMessage.MsgNo), (char *)pBuf, sizeof(iMsgNo));
MyMessage.Msg = new char[strlen((char*)(pBuf+sizeof(int)))];
strcpy(MyMessage.Msg, (char*)(pBuf+sizeof(int)));

The idea is that you must know the length of the buffer that is passed between the 2 processes, both on sending and on receiving.
0
 
hatimadAuthor Commented:
Hello,

Thanks for the example, I have got the shared meomory part working just like you have pointed out.

At the moment, after I map data from process1 to memory file, I have to manually start using data in process 2

How do I inform process 2 to start using the data after process 1 has copied it to the memory file autmetically??

0
Question has a verified solution.

Are you are experiencing a similar issue? Get a personalized answer when you ask a related question.

Have a better answer? Share it in a comment.

All Courses

From novice to tech pro — start learning today.