Pergunta

Tenho um objeto de mensagem serializado como fluxo de dados binários (pode ser qualquer std :: streambuf) e desejo transferi-lo para outro processo. A chave é: o aplicativo do servidor deve lidar com muitos clientes, a conexão deve ser assíncrona (por causa de vários clientes) e bidirecional (por baixo do capô, pode ser implementada por duas conexões separadas). As mensagens têm comprimento variável e devem ser enfileiradas. Que método de IPC devo escolher para isso? Existe alguma maneira simples de transferir buffer de fluxo por meio de aplicativos? A velocidade não é crítica, mas será bom não bloquear o aplicativo por muito tempo. Tudo será feito localmente no Windows (pretendo no XP e mais recentes), sem necessidade de suporte de rede.

Também preciso ouvir as conexões de entrada. O servidor deve detectar automaticamente novas conexões, fazer algum handshake e aceitar, se for compatível. Estou ciente de que preciso escrever muitas coisas que mencionei sozinho. De qualquer forma, deve ser possível alcançar, mas é claro que quanto mais simples, melhor.

Foi útil?

Solução

Você pode usar canais nomeados nas janelas. Consulte MSDN ref: http://msdn.microsoft.com / en-us / library / aa365150% 28v= vs. 85% 29.aspx

Você também pode defini-lo como full duplex (bidirecional) e assíncrono.Se você estiver familiarizado com APIs de E / S de arquivo no Windows, ele deve ser simples de usar.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top