1

問題は、まあ、それはC++だということです。私が作成した方法では、常にターミナル/コンソールウィンドウを介して実行され、ユーザー入力を待つか、サンプル入力を取得して実行するようになっています。また、出力は常に端末画面または場合によってはファイルに送信されます。可能であれば、ソースコードをそのままにして、それらすべてをWebサイトに統合する方法がよくわかりません。私が目指しているのは、使用しているWebサイトを、ユーザー入力を受け入れて送信し、問題のC ++プログラムを実行して、出力を返すターミナルウィンドウのように動作させることだと思います(それが何であれ)。 、すべてソースコードへの最小限の変更で。それか、ユーザーが「実行」をクリックするだけで、より自動化された種類のページを設定します

Webに関しては、HTML、CSS、PHP、MySQLの中間であり、Javascriptの初心者であると考えているので、これらの言語を使用してこれを実現できれば、それは素晴らしいことです。そうでない場合でも、私に何か新しいものを見せることを恐れないでください。

4

6 に答える 6

3

Webにもたらす最も簡単なインタラクションモデルは、入力を前もって受け取り、で出力を生成するアプリケーションですstdoutこの状況では、未知のポスターが述べたように、 CGIを使用できます。ただし、CGIの性質上、これは(最も単純な意味で)すべての情報がユーザーから1ページで収集され、アプリケーションに送信され、結果が1ページで返される場合にのみ機能します。これは、CGIを使用してページを呼び出すたびに、要求を処理するための新しい独立したプロセスが生成されるためです。( FastCGIなど、他にも効率的なソリューションがありますアプリケーションがインタラクティブである場合、いくつかの情報を収集し、いくつかの結果を提示し、いくつかのオプションを出力し、さらにいくつかのユーザー入力を収集し、さらに多くの結果を生成するという点で、アプリケーションを適応させる必要があります。

これは、C++で可能な最も単純なCGIプログラムについてです。

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

コンテンツタイプに続いて空白行を返し、次に通常の退屈な挨拶で実際のコンテンツを返すだけです。

ユーザー入力を受け入れるには、フォームをHTMLで記述し、POSTターゲットはアプリケーションになります。通常のHTTPスタイルで、リクエストのパラメータを含む文字列が渡されます。

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

次に、クエリ文字列(環境変数を介してプログラムに渡される)を解析してQUERY_STRING、フォームから入力フィールドを収集し、アプリケーションに渡す必要があります。パラメータ文字列の解析は多数のセキュリティエクスプロイトの原因であるため、注意してください。解析を行うC++用のCGIライブラリ(Google検索で多くのことがわかります)を見つけることは間違いなく価値があります。クエリデータは次の方法で取得できます。

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

したがって、少なくとも、name=valueペアのクエリ文字列からの入力を受け入れるようにアプリケーションを変更する必要があります。必要がなければ、HTMLを生成する必要さえありません。text/plainそもそもコンテンツタイプを返すだけです。その後、HTMLを使用して改善できます(それに応じてコンテンツタイプを変更できます)。

WtなどのWebフレームワーク全体を含む、他のより洗練されたソリューションがあります。しかし、それはあなたが避けたいとあなたが言ったあなたのアプリへのかなりの変更を伴うでしょう。

于 2009-09-25T23:32:14.450 に答える
2

ほとんど話題から外れていますが、 Wtを見てみたいと思うかもしれません。

于 2009-09-26T02:25:38.843 に答える
1

cgi の使用を検討したことがありますか ... Web サーバーが C/C++ で記述されたプログラムを実行して実行し、出力を生成できるようにする 19 世紀の技術

私はそれについてあまり知りません...しかし、いくつかの学校のプロジェクトに使用しました

于 2009-09-25T22:56:32.133 に答える
0

プロジェクトを披露する目的は何ですか? 友人や雇用主に感銘を与えたいですか?

Web インターフェイスを介して C++ コンソール アプリをエミュレートまたは移植することは現実的ではないようです。サーバー側のスクリプトと、ユーザー入力をアプリに渡し、Web インターフェイスを介して結果を返す C++ バイナリとの間のブリッジを作成できると思います。これはあなたが引き受けなければならない大きな仕事になることを心に留めておいてください。

Ruby の Web サイトには、これが可能であることを示すコンパイラがあります。

ただし、Web 上の誰も Web ブラウザーで C++ アプリを実行することを期待していません。また、C++ アプリの実行に興味がある人は、作成した C++ バイナリをダウンロードして実行することにまったく問題ないと思いますが (セキュリティ リスクは別として)、考えてみると、私たちはアプリをダウンロードして実行しています。 、ソースを信頼しながら。

私は、雇用主に私の作品を見てもらうために作成したポートフォリオ Web サイトを持っています。見てください、それはあなたが物事を行うことができる別の方法のアイデアを与えるでしょう.

基本的に、ダウンロード用のバイナリ、ビデオ、スクリーンショット、およびリンクを提供します。ユーザーが自分のプロジェクトを実行する時間がない (または適切なコンピューターがない) 場合に、自分の作品をすばやく確認するために使用できるもの。

幸運を

于 2009-09-26T02:38:33.997 に答える
0

私はこれについて経験がありません (BART の人がサーバー側コードをすべて C で実装することについて話しているのを聞く以外は)、SWIG ( http://www.swig.org/ ) を見てみることを検討してください。PHP などの言語を使用するときに C++ コードにアクセスできるように、C++ をラップできます。

于 2009-09-26T02:46:31.463 に答える
0

Screencasts ですべてを披露しましょう。私は Camtasia Studio を使用していますが、たくさんあります: http://en.wikipedia.org/wiki/Screencast

Camtasia は、Web サーバーにアップロードする必要があるすべての HTML と Flash も生成します。素敵な USB マイクを購入し、発言や表示する内容のスクリプトを作成します。

于 2009-09-25T22:57:11.663 に答える