COM port simulation: Named Pipes

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.
nigel5Asked:
Who is Participating?
 
DarthModConnect With a Mentor Commented:
PAQed, with points refunded (200)

DarthMod
Community Support Moderator
Experts-Exchange
0
 
DanRollinsCommented:
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
 
danny_pavCommented:
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
Free Tool: IP Lookup

Get more info about an IP address or domain name, such as organization, abuse contacts and geolocation.

One of a set of tools we are providing to everyone as a way of saying thank you for being a part of the community.

 
nigel5Author Commented:
Ah, and if it can't connect, then it can open the server end...

Cool...

I'll give it a go.
0
 
nigel5Author Commented:
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
 
DanRollinsCommented:
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
All Courses

From novice to tech pro — start learning today.