Solved

Example of IPC in VC++ .Net

Posted on 2004-09-16
9
719 Views
Last Modified: 2012-08-14
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
0
Comment
Question by:hatimad
  • 4
  • 3
  • 2
9 Comments
 
LVL 6

Expert Comment

by:Svetlin_Panayotov
ID: 12082103
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
 
LVL 6

Expert Comment

by:Svetlin_Panayotov
ID: 12082176
Oh...and another - from CodeProject again http://www.codeproject.com/internet/WinBattleArticle.asp
0
 
LVL 16

Expert Comment

by:nonubik
ID: 12082322
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
 
LVL 16

Expert Comment

by:nonubik
ID: 12082328
0
Why You Should Analyze Threat Actor TTPs

After years of analyzing threat actor behavior, it’s become clear that at any given time there are specific tactics, techniques, and procedures (TTPs) that are particularly prevalent. By analyzing and understanding these TTPs, you can dramatically enhance your security program.

 

Author Comment

by:hatimad
ID: 12084866
Thanks for your comments, I will go through the links and get back
0
 

Author Comment

by:hatimad
ID: 12088619
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
 
LVL 16

Expert Comment

by:nonubik
ID: 12095573
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
 

Author Comment

by:hatimad
ID: 12095890
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
 
LVL 16

Accepted Solution

by:
nonubik earned 500 total points
ID: 12099971
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

Featured Post

How to improve team productivity

Quip adds documents, spreadsheets, and tasklists to your Slack experience
- Elevate ideas to Quip docs
- Share Quip docs in Slack
- Get notified of changes to your docs
- Available on iOS/Android/Desktop/Web
- Online/Offline

Join & Write a Comment

Suggested Solutions

Title # Comments Views Activity
Destory  window  not working 2 130
help with SQL 15 117
Need some help with delete a recordset 7 125
looking for books on c++ and javascript 4 146
The following diagram presents a diamond class hierarchy: As depicted, diamond inheritance denotes when two classes (e.g., CDerived1 and CDerived2), separately extending a common base class (e.g., CBase), are sub classed simultaneously by a fourt…
In Easy String Encryption Using CryptoAPI in C++ (http://www.experts-exchange.com/viewArticle.jsp?aid=1193) I described how to encrypt text and recommended that the encrypted text be stored as a series of hexadecimal digits -- because cyphertext may…
Access reports are powerful and flexible. Learn how to create a query and then a grouped report using the wizard. Modify the report design after the wizard is done to make it look better. There will be another video to explain how to put the final p…
When you create an app prototype with Adobe XD, you can insert system screens -- sharing or Control Center, for example -- with just a few clicks. This video shows you how. You can take the full course on Experts Exchange at http://bit.ly/XDcourse.

762 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question

Need Help in Real-Time?

Connect with top rated Experts

18 Experts available now in Live!

Get 1:1 Help Now