First, "Managed C++" was superseded by C++/CLI which you tag, so this is hardly an option. Everything else really depends on details of your requirements and even of the level you are familiar with the technologies. In this case, it's not possible to justify any advice of the type "use just this, nothing else".
Unfortunately, WCF for unmanaged part (legacy MFC application) seems too much of a hassle to me, see http://stackoverflow.com/questions/686452/create-wcf-service-for-unmanaged-c-clients
Sockets or Named Pipes? Both seem reasonable. I think, with Sockets its somewhat easier to write more portable code.