Tenho um programa em C e C++ que está instalado num servidor, este programa é terceirizado. Ele envia dados por NamedPipe… já uso comunicação através de sockets, só que to meio perdido. Não sei como posso fazer essa comunicação. Não entendo o que é NamedPipes.
"Named Pipes" é um recurso do Windows que não é implementado pelo Java. Você vai ter de pegar as APIs de Named Piped do Windows e encapsulá-las em uma DLL JNI. (argh bleargh ugh ).
Já fiz programas com Named Pipes em C++, mas davam tanto problema (permissão de usuário, queda de conexão etc.) que convertemos todos para sockets.
Acho que nem o C# tem suporte direto a Named Pipes.
Veja a Java Magazine deste mês para ter uma idéia do que é JNI.
Dica: Se você tiver um colega que consiga fazer uma ponte "named pipes <-> sockets" em C (serviço do Windows), então vocè poderia fazer seu programa em Java sem ter problemas com JNI, que é bastante difícil na verdade. (Eu não recomendaria o uso do JNI, exceto em casos muito específicos).
No Unix, também há um recurso de “Named Pipes”, mas ele é muito mais simples de usar, já que cada “named pipe” é associado a um arquivo. Portanto pode ser usado “FileInputStream” para ler e “FileOutputStream” para escrever nesse “arquivo”.