La differenza tra la modalità tipo PIPE_TYPE_BYTE
e PIPE_TYPE_MESSAGE
vengono spiegate http://msdn.microsoft.com/en-us/library/aa365605.aspx: quanti dati
Modo Tipo
il modo del tipo di un tubo determina è scritto in una named pipe I dati possono essere trasmessi attraverso una pipe denominata come flusso di byte o come un flusso di messaggi. Il server pipe specifica il tipo di pipe quando si chiama CreateNamedPipe per creare un'istanza di una named pipe. Le modalità tipo devono essere uguali per tutte le istanze di una pipe .
Per creare una pipe di tipo byte, specificare PIPE_TYPE_BYTE o utilizzare il valore predefinito . I dati vengono scritti nella pipe come flusso di byte e il sistema non distingue tra i byte scritti in diverse operazioni di scrittura .
Per creare una pipe di tipo messaggio, specificare PIPE_TYPE_MESSAGE. Il sistema tratta i byte scritti in ogni operazione di scrittura nella pipe come messaggio unità. Il sistema esegue sempre le operazioni di scrittura sulle pipe di tipo messaggio come se la modalità write-through fosse abilitata.
Se si vuole scrivere un flusso di dati rispetto dei tubi è necessario utilizzare la modalità PIPE_TYPE_BYTE
tipo. Quindi è possibile scrivere tutti i dati nel buffer di tubi in relazione a WriteFile
e leggerli sull'altro lato rispetto a ReadFile
. Come esattamente i dati verranno inviati non è importante per te. I dati di alcune operazioni di WriteFile
possono essere trasferiti come un unico blocco di dati.
Se si utilizza la modalità di tipo PIPE_TYPE_MESSAGE
ogni operazione di scrittura segue al trasferimento dati, poiché la scrittura nella pipe verrà interpretata come un invio del messaggio. È disponibile una funzione speciale TransactNamedPipe
che consente di scrivere un messaggio e leggere un messaggio dalla named pipe specificata in un'operazione di rete singola .
Post correlati: http://stackoverflow.com/questions/4514784/pipetransmissionmode-message-how-do-net-named-pipes-distinguish-between-messag –