Uso degli stream per connettere i linguaggi di programmazione

1

Sto cercando di eseguire un programma pesante per il calcolo che crea un'immagine su un sito web. È possibile calcolare in C ++ e avere un flusso di output che si connette a un flusso di input in Node.js per visualizzare un'immagine, o in alternativa, lo streaming è per l'utente e lo visualizza tramite JavaScript?

Inoltre, sto usando Monte-Carlo Sampling in modo che lo stream sia binario.

    
posta user939687 22.01.2015 - 21:39
fonte

1 risposta

5

Risposta breve: sì.

Un flusso nel contesto del software è semplicemente una sequenza di byte. Ciò che questi byte rappresentano dipende da te: potrebbe essere un testo ASCII, caratteri Unicode, un'immagine JPEG, un oggetto serializzato, tutto ciò che il tuo cuore desidera. L'importante è che il produttore e il consumatore dello stream concordino sul formato.

Inoltre, un flusso non è specifico per due programmi che parlano tra loro. Puoi utilizzare gli stream all'interno dello stesso programma in modo che due moduli possano comunicare tra loro in modo flessibile.

Quello che stai veramente cercando è l'idea di socket . Un socket viene in genere utilizzato per IPC o comunicazione tra processi. Una panoramica di alto livello del processo ha il seguente aspetto:

  1. Il programma A apre un socket in una posizione specifica, normalmente un indirizzo IP e una porta.
  2. Il programma B è in ascolto su quell'indirizzo IP e sulla porta e apre il socket sull'altra estremità.
  3. Entrambi i programmi aprono i flussi per quel socket. Il programma A può scrivere byte nel suo flusso di output, che compare nel flusso di input del Programma B dopo aver attraversato il socket. È vero anche il contrario, consentendo la comunicazione bidirezionale.
  4. Al termine della comunicazione, un lato chiude la connessione socket.

(Se ci pensi, sembra molto come caricare una pagina web nel tuo browser. Non è una coincidenza.)

Si noti che la lingua, l'architettura e la posizione fisica dei due programmi non sono specificati. Questa è la bellezza delle prese: sono di livello molto basso e semplicemente non si preoccupano di quei dettagli.

Normalmente utilizzerai una libreria per gestire socket e stream. Alcune lingue hanno tali funzionalità integrate nelle librerie standard, altre no. Indipendentemente da ciò, le lingue più popolari avranno qualcosa disponibile perché questo è un compito molto comune richiesto ai moderni sistemi informatici.

    
risposta data 23.01.2015 - 00:09
fonte