Domanda

Il problema è che, beh, è ​​C++.Il modo in cui li ho creati fa sì che siano sempre stati eseguiti tramite una finestra terminale/console e attendano l'input dell'utente oppure semplicemente prendano un input di esempio ed eseguano quello.Anche l'output è sempre stato sullo schermo del terminale o talvolta su un file.Non sono del tutto sicuro di come potrei prendere tutto questo e integrarlo con un sito web lasciando il codice sorgente così com'è, se possibile.Immagino che quello a cui sto cercando di mirare sia fare in modo che qualunque sito Web utilizzi si comporti come una finestra di terminale che accetterà l'input dell'utente e quindi lo invierà per eseguire il programma C++ in questione e restituirà l'output (qualunque esso sia) , il tutto con modifiche minime al codice sorgente.Oppure imposta un tipo di pagina più automatizzato in cui un utente può semplicemente fare clic su "Vai" e il programma verrà eseguito utilizzando un input di esempio.

Quando si tratta di web mi considero un intermedio con HTML, CSS, PHP e MySQL e un principiante con Javascript, quindi se questo potesse essere realizzato utilizzando quei linguaggi, sarebbe fantastico.In caso contrario, non aver paura di mostrarmi qualcosa di nuovo.

È stato utile?

Soluzione

Il modello di interazione più semplice per portare al web è un'applicazione che riceve l'input su fronte e produce sua uscita sulla stdout. In questa situazione, come il manifesto sconosciuta accennato, è possibile utilizzare CGI . Ma a causa della natura di CGI, questo funziona solo (nel senso più semplice) se tutte le informazioni sono raccolte da parte dell'utente in una pagina, inviata all'applicazione ed i risultati restituiti in una pagina. Questo perché ogni invocazione di una pagina utilizzando CGI genera un nuovo processo indepdent per soddisfare la richiesta. (Ci sono altre soluzioni più efficienti ora, come FastCGI che mantiene un pool di processi intorno. ) Se l'applicazione è interattiva, nel senso che raccoglie alcune informazioni, presenta alcuni risultati, stampa alcune opzioni, raccoglie un po 'di input dell'utente, quindi produce più risultati, dovrà essere adattato.

Qui è di circa il più semplice programma CGI possibile in C ++:

#include <iostream>
int main(int argc, char* argv[])
{
    std::cout << "Content-type: text/plain\n" << std::endl;
    std::cout << "Hello, CGI World!" << std::endl;
}

Tutto ciò che fa è restituire il tipo di contenuto, seguito da una riga vuota, allora il contenuto vero e proprio con il solito saluto noiosa.

Per accettare l'input dell'utente, si scrive un modulo in formato HTML, e l'obiettivo POST sarebbe la vostra applicazione. Sarà passata una stringa contenente i parametri della richiesta, nel solito stile HTTP:

foo.cgi?QTY=123&N=41&DESC=Simple+Junk

Si sarebbe quindi necessario analizzare la stringa di query (che viene passato al programma tramite la variabile d'ambiente QUERY_STRING) per raccogliere i campi di input dal modulo per passare alla vostra applicazione. Attenzione, come l'analisi stringhe di parametri è la fonte di un gran numero di exploit di sicurezza. Sarebbe sicuramente la pena di trovare una libreria CGI per C ++ (una ricerca su Google rivela molti) che fa il parsing per voi. I dati della query possono essere ottenuti con:

const char* data = getenv("QUERY_STRING");

Quindi, come minimo, si avrebbe bisogno di cambiare la vostra applicazione per accettare il suo ingresso da una stringa di query di coppie name=value. Non c'è nemmeno bisogno di generare codice HTML se non si vuole; semplicemente restituire il tipo di contenuto come text/plain per cominciare. Poi si può migliorare in un secondo momento con l'HTML (e cambiare il tipo di contenuto di conseguenza).

Ci sono altre soluzioni più sofisticate, tra cui interi framework web come Wt . Ma questo comporterebbe notevoli modifiche alle applicazioni, che hai detto che desiderava evitare.

Altri suggerimenti

Quasi off-topic, ma si potrebbe desiderare di dare un'occhiata a Wt .

Hai pensato di usare CGI ... la sua tecnologia del 19 ° secolo, che permette di webserver eseguire programmi scritti in C / C ++ per eseguire e generare l'output

Non so molto su di esso ... ma l'ho usato per alcuni progetti scolastici

Mostra tutto con Screencast.Io uso Camtasia Studio, ma ce ne sono tantissimi là fuori: http://en.wikipedia.org/wiki/Screencast

Camtasia genererà anche tutto il codice HTML e Flash di cui hai bisogno per caricare sul tuo server web.Acquista un bel microfono USB e scrivi una sceneggiatura di ciò che dirai e mostrerai.

Qual è lo scopo di mettersi in mostra i vostri progetti? Volete impressionare i vostri amici o datori di lavoro?

Non sembra fattibile per emulare o porta i tuoi C ++ applicazioni console attraverso un'interfaccia web. Immagino che si potrebbe scrivere un ponte tra uno script lato server e il vostro C ++ binario che passa l'input dell'utente tramite per la vostra applicazione, quindi restituisce il risultato attraverso l'interfaccia web. Tenete a mente questo sarebbe un compito enorme per voi di intraprendere.

Rubino hanno un compilatore sul loro sito web che dimostra questo può essere fatto.

Tuttavia nessuno sul web, si aspetta di eseguire le applicazioni C ++ in un browser web. Inoltre penso che chiunque sia interessato nella gestione di un C ++ app sarebbe totalmente a mio agio con il download di un C ++ binario che hai fatto ed eseguirlo (a parte il rischio per la sicurezza), ma quando si pensa a questo proposito abbiamo scaricare applicazioni ed eseguire loro tutto il tempo , confidando la fonte, mentre.

Ho un sito web portafoglio che ho creato con lo scopo di datori di lavoro lasciando vedere il mio lavoro . Date un'occhiata, che vi darà un'idea di un altro modo è possibile fare le cose.

In sostanza fornisco i binari per il download, video, immagini e link. Le cose che l'utente può usare per vedere il mio lavoro in fretta, se non hanno il tempo (o un computer appropriato) per eseguire i miei progetti su.

In bocca al lupo

Non ho esperienza con questo (altro che ascoltare un ragazzo su BART parlare di attuare il suo codice lato server tutto in C), ma si potrebbe considerare dare un'occhiata a SWIG ( http://www.swig.org/ ). Esso permette di avvolgere C ++ in modo da poter accedere al codice C ++ quando si utilizzano linguaggi come PHP.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top