È meglio utilizzare le code di messaggi POSIX o socket di dominio Unix per la comunicazione IPC locale?Quale è meglio per IPC locali, code di messaggi POSIX (mqueues) o socket di dominio Unix (locali)?
Ho lavorato con socket Unix tra macchine (non dominio) e ricordo che creare e interrompere la connessione avrebbe indotto i socket a fermarsi un po 'prima che finalmente se ne andassero. Inoltre, se si desidera uno scambio "affidabile" è necessario utilizzare TCP o progettare l'applicazione per restituire un ACK. Non sono sicuro se questo si applica anche ai socket di dominio Unix.
Nel mio progetto attuale abbiamo bisogno di IPC locale. La mia prima reazione è stata di usare POSIX MQueues, dal momento che li ho usati prima per la messaggistica locale. Tuttavia, un collaboratore suggerisce invece socket di dominio Unix.
Uno è migliore dell'altro o si tratta di programmare familiarità? O forse dipende dall'applicazione che si sta creando?
In una grande immagine l'applicazione su cui stiamo lavorando segue un modello client/server. I client inviano messaggi al server per "fare qualcosa". Tuttavia, il client non aspetta una risposta "fatta", sebbene voglia sapere se la richiesta è stata ricevuta o meno.
La logica di base per il lato di invio è:
connect to server
send request
note if the send worked or not
disconnect from server
Ci possono essere centinaia di clienti a quello server.
Stiamo eseguendo su un sistema SMP (4-8 core) che esegue il sistema operativo Linux.
Grazie in anticipo.
Dirò ... dbus! – karlphillip