Solved

COM port simulation: Named Pipes

Posted on 2002-04-22
7
294 Views
Last Modified: 2013-11-20
I do not have 2 COM ports on the back of my PC, so I am trying to use an internal software pretend comport.

I am trying to use Named Pipes, as I require bidirectional FIFO comms. However, the examples I have seen all depend on knowing whether you are programming the client or server end of the pipe.. i.e. server: CreateNamedPipe().... Client: ConnectNamedPipe()...

I am trying to encapsulate this in a class so I can use the same code in both client and server ends... which ever end starts first will create the pipe, and which ever is last out will close the pipe. (hopefully, windows is clever enough to know that when I CloseHandle() the last one out will destroy the resources??? )

Any Ideas please???

Thanks.
Nigel.
0
Comment
Question by:nigel5
7 Comments
 
LVL 49

Expert Comment

by:DanRollins
Comment Utility
THis article contains cod that creates a CNamedPipe class, derived from CFile.  It should answer all of your questions.

Garden Hoses at Work
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnpic/html/msdn_npipes.asp

A quick read indicates that the author does *not* expect to make the ends of the pipe interchangeable.  One end is the server and one is the client.  But remember that communication is bidirectional, so it doesn't really matter which end is which once the connection is established.

-- Dan
0
 
LVL 3

Expert Comment

by:danny_pav
Comment Utility
You can't make the ends interchangeable.

The closest you can do is to make your client continuously try to connect to a server.
0
 

Author Comment

by:nigel5
Comment Utility
Ah, and if it can't connect, then it can open the server end...

Cool...

I'll give it a go.
0
Highfive Gives IT Their Time Back

Highfive is so simple that setting up every meeting room takes just minutes and every employee will be able to start or join a call from any room with ease. Never be called into a meeting just to get it started again. This is how video conferencing should work!

 

Author Comment

by:nigel5
Comment Utility
Sorry for not getting back for a bit, but been doing lots of other things...

If you test to see if the pipe exists first you can either attach to it if it exists, or create it if it doesn't. That way you can make the same class handle the work, and you don't have to worry about the concept of server/client.

When you close the hanldes, Windows handles the cleanup, so the server can disconnect first, and the pipe can still be connected to by another process.
0
 
LVL 49

Expert Comment

by:DanRollins
Comment Utility
nigel5,
If you have answered this question yourself, please post to Community Support and ask for a refund.  Better to finalize this now and save work for the database cleanup crew.
-- Dan
0
 
LVL 1

Accepted Solution

by:
DarthMod earned 0 total points
Comment Utility
PAQed, with points refunded (200)

DarthMod
Community Support Moderator
Experts-Exchange
0

Featured Post

Enabling OSINT in Activity Based Intelligence

Activity based intelligence (ABI) requires access to all available sources of data. Recorded Future allows analysts to observe structured data on the open, deep, and dark web.

Join & Write a Comment

Suggested Solutions

Introduction: Finishing the grid – keyboard support for arrow keys to manoeuvre, entering the numbers.  The PreTranslateMessage function is to be used to intercept and respond to keyboard events. Continuing from the fourth article about sudoku. …
Introduction: Dialogs (1) modal - maintaining the database. Continuing from the ninth article about sudoku.   You might have heard of modal and modeless dialogs.  Here with this Sudoku application will we use one of each type: a modal dialog …
This video will show you how to get GIT to work in Eclipse.   It will walk you through how to install the EGit plugin in eclipse and how to checkout an existing repository.
Here's a very brief overview of the methods PRTG Network Monitor (https://www.paessler.com/prtg) offers for monitoring bandwidth, to help you decide which methods you´d like to investigate in more detail.  The methods are covered in more detail in o…

763 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

10 Experts available now in Live!

Get 1:1 Help Now