1read 100read
2012年07月WebProg477: C/C++ CGIスレッド (707)
TOP カテ一覧 スレ一覧 2ch元 削除依頼 ▼
アプリケーションサーバって必要? (209)
ソーシャルネットワーキングのシステムを作ろう! (598)
PHP を流行らせるには (210)
【PHP】Lvうpしたいので宿題ください (261)
【PHP】PHPフレームワーク総合スレ15 (707)
エンコード文字列だけのスレ (204)
C/C++ CGIスレッド
- 1 :04/02/26 〜 最終レス :2011/06/02
- C言語CGI専用スレッド
http://pc2.2ch.net/test/read.cgi/php/988918264/
C/C++ CGI 専門のスレッドです。
スクリプトを検索できるサイトです。
http://cgi.resourceindex.com/Programs_and_Scripts/C_and_C++/
http://www.cgifiles.com/scripts/cc++/index.shtml
前スレ
http://pc2.2ch.net/test/read.cgi/php/988918264/
- 2 :
- あ、スレッドナンバー入れるの忘れた。part 3かな?
- 3 :
- >>2
C/C++統合スレだからPart1でいいよ
- 4 :
- Cで書かれたchat
http://www.asahi-net.or.jp/~fj9y-ynym/SofChat/
- 5 :
- スクリプトを検索
- 6 :
- 相変わらず CGIどまりですか?
apache module はやらないんですね…
- 7 :
- 次は
C/C++ Webアプリ全般スレッド
かな
- 8 :
- >7
いつになることやら
- 9 :
- >>8
荒れればあっという間
- 10 :
- #include <cgi>
- 11 :
- #include <2c.h>
- 12 :
- C/C++のネイティブ感がたまらん。
- 13 :
- >>6
そこまで行くとこの板の範疇じゃ無いだろ。
- 14 :
- C++っていいよね。
- 15 :
- 前スレからC++がいいと言う人が何人かいますが
そういう人はどんなコンパイラを使っているのでしょうか?
- 16 :
- ふつうにgccじゃないの?
- 17 :
- 書くときは VC++ 2003。
- 18 :
- CGI書くのにわざわざVC++使いますか?
- 19 :
- MinGWのGCCは、std::wstring周りがうまくいかない希ガス
- 20 :
- >>13
apache modle で blog とか 掲示板とか をつくったりするなら
web prog じゃないかなって思ったんだけどね
- 21 :
- cのCGI動かす時、apacheの設定どうしてますか?
perlのスクリプトと混在してると
perlに送られてエラー500返されちゃうので困ってます。
- 22 :
- ( ゚д゚)ポカーン
- 23 :
- >>21
(゚Д゚)ハァ?
- 24 :
- 尋ね方がおかしかったでしょうか。
それとも根本的な勘違いでしょうか。
後者なら出直して参ります。
- 25 :
- スレ汚し申し訳ありません。
”とんでもない勘違い”をしていました。
無事動作致しました。
- 26 :
- CGIに不正入力はつき物だが
その場合戻り値でmainまで報告するか、それともexitを使ってその場で終了か
どっちがいいかの。
- 27 :
- C++なら例外投げるヨロシ
- 28 :
- Cで書いた CGI で画像を表示したいと思ってるんだが、どうもうまく行かない。
鯖は Windows の Apache、C で書いたテキストベースの CGI は問題無く動作してるのだが・・・。
CGI 本体はこんな↓感じ。
infile = fopen( filename, "rb" ); /* もちろんファイルネームは入れてあるよ */
if( NULL != infile ) {
i = fread( rbuf, 1, SIZE, infile ); /* SIZE は画像ファイルのサイズだよ */
printf( "Content-Type: image/gif\n\n" );
setmode( _fileno( stdout ), _O_BINARY ); /* Windows だからこうする(涙) */
fwrite( rbuf, 1, SIZE, stdout );
setmode( _fileno( stdout ), _O_TEXT ); /* そして元に戻しておく */
fclose( infile );
}
で、MIME タイプを書き出す printf だけをやめて、鯖 PC でこの CGI を直に実行して
リダイレクトで画像ファイル作ると、ちゃんと出来てるんだな これが。
呼び出す時は何の変哲も無く img タグによる CGI 呼び出しなんだが、
バッテンしか表示されない・・・。
正直、行き詰まってます。どなたかお助けを・・・。
- 29 :
- >>28
img じゃなくて ダイレクトにそのCGIを呼んだらどうなる?
- 30 :
- ごめんなさい呼び出す HTMLが間違ってました吊ってきます・・・
あ、ちなみに上記のよーなソースで、ちゃんと出来ましたですよ。これで Cでも画像出すのはオッケー。
- 31 :
- >>29
えとですね、MIMEタイプで imageにしちゃってるんで、imgタグでないと無理です、たぶん。
吐き出してる内容はバイナリなんで、MIMEタイプを textにするってワケにも行きませんし。
- 32 :
- MIMEタイプで imageにしちゃってるんで、imgタグでないと無理
- 33 :
- ブラウザのアドレス欄にそのCGIのURL入力でも表示できるだろ。
- 34 :
- >>31
試してみた?
>>32
したっかぶりっこ?
MIMEがついてるんだからこそブラウザ側で判断してくれてちゃんと画像として表示されるよん
- 35 :
- したっかぶりっこ?
- 36 :
- つーか、ブラウザで.gifへのリンクが開けないとでも思っているのか、と。
http://pc2.2ch.net/ba.gif
>34
>32は晒し上げしているのではないかと。
- 37 :
- >>36
ああ 本当だ すまそ >>33
- 38 :
- >>29
あ、ダイレクトに、ってのは、ブラウザからって意味ですか・・・。
すみません、思い切り勘違いしてました。
(imgタグでない、他の方法で HTMLに記述しろ、という意味かと思ってました・・・ formとか)
試してませんが、たぶん出来ると思います。>>33、>>34、>>36さんの言ってる通りではないかと。
お騒がせしたです・・・。
- 39 :
- Web製作版から出直しな
- 40 :
- 書くとこ間違えた_| ̄|○
- 41 :
- WindowsでLinux用バイナリを吐くことができる
C++コンパイラってありますか?
- 42 :
- >>41
答えにはならないけど、LiveCD使うといいのでは?
漏れはLinuxユーザだけど、FreeBSDのサーバで動かすために
FreeBSDのLiveCDを使ったらうまくいった
- 43 :
- >>42
FreeSBIEとかいうやつ?
- 44 :
- >>43
http://livecd.sourceforge.net/
http://www.freesbie.org/
http://www.netboz.net/
漏れはひとつめのLiveCDというのを使った
aaacafeで動いてる
libc(?)以外のライブラリは静的リンクにしてある
% ldd hoge.cgi
hoge.cgi:
libm.so.2 => /usr/lib/libm.so.2 (0x28091000)
libc.so.4 => /usr/lib/libc.so.4 (0x280ad000)
linuxだとgccやglibcのバージョンに気をつけて選ぶといいかもしれない
- 45 :
- >>42-44
試してみます。ありがとうございました。
- 46 :
- Lindowsじゃ無理?
- 47 :
- >>46
個々のdistroの詳細は板違いなので
Linux板のdistro比較のスレなどを見たほうがいいかも
とりあえずこのへんをチェック
http://www.distrowatch.com/
http://www.distrowatch.com/table.php?distribution=lindows
- 48 :
- CでCGI書くとき、filelockはどうやってます?
- 49 :
- fcntl
- 50 :
- http://pc.2ch.net/test/read.cgi/linux/1077124382/221
あのキモヲタがゴリゴリCでCGIを書く時のライブラリを作っているらしい。
- 51 :
- guest guest/98
- 52 :
- >48
mkdir
- 53 :
- flock()
- 54 :
- fcntl(2)
flock(2)
lockf(3)
- 55 :
- resize.plの C版みたいなの知りませんか?
ここ検索すれとか、何か情報キボン。
いちおうググってみたいけど、ロクなのが見つからない・・・ OTL
- 56 :
- みたいけど
↓
みたけど
- 57 :
- ロクなのが見つからない
- 58 :
- いかりや長介さん、亡くなっちゃいましたね。
ご冥福をお祈り申し上げますです。
- 59 :
- それはいいが
なぜこのスレに書き込んだのかが、大きな問題だ。
- 60 :
- > 【訃報】いかりや長介さん逝去
> すばらしい笑いと、円熟の演技を与えてくれたいかりや長介さ
> んが亡くなりました。
> ご冥福をお祈りします。
>
> なお、現在news系のサーバはアクセス過剰で繋がりにくくなっ
> ています。
> いかりやさんを偲ぶのには以下の板をご利用ください
> http://live8.2ch.net/livesaturn/
> http://live10.2ch.net/livevenus/
- 61 :
- http://acpp.sourceforge.jp/
こんなの見つけた
- 62 :
- >>61
説明ド下手糞な気がするんだが
- 63 :
- >>62
俺もそう思った
- 64 :
- age
- 65 :
- char AtoH( char c ){
if( ('0' <= c) && (c <= '9') ) return c - '0';
if( ('A' <= c) && (c <= 'F') ) return c - 'A' + 10;
return 0;
}
// 特殊記号を変換する
void form::Escape( char* src )
{
if(src){
char *dst;
for(dst = src; *src; src++ ){
if( *src == '%' )
*dst++ = ( AtoH( *++src ) << 4 ) + AtoH( *++src );
else if( *src == '+' ) *dst++ = ' ';
else *dst++ = *src;
}
*dst++ = '\0';
}
}
URLエンコード文字列をデコードする関数なんですが、
これがVC2003でうまく動かないんです(VC6ではできたのに)。
原因がわかる人がいらしたら教えてください。
VC2003はほとんど初期設定です。
- 66 :
- ( ゚д゚)ポカーン
- 67 :
- 自力解決しますた…
お騒がせスマソ…
- 68 :
- なんて過疎
- 69 :
- CGI/1.2ドラフトを訳していたのですが、質問です。
http://cgi-spec.golux.com/cgi-120-00a.html
章8.2 のLocationに関する項目を読むと、絶対URIがスクリプトによって返されると、
サーバは'302 redirect' HTTP応答メッセージを発生させるだろう、とあります。
しかし、302はMoved Temporarilyで、307 がTemporary Redirectになります。
これは誤植と解してよいのでしょうか?
- 70 :
- >>69
スレ違いな気もするけど…。
307コードがHTTP/1.1以降だからでは。
- 71 :
- ああ、このドラフトはHTTP/1.0策定時点のままということか。
了解しました。サンクス。
http://www.itmedia.co.jp/dict/internet/www/server/03011.html
つーか、ドラフトのまんまでなぜ決定しないんでしょうかね。
- 72 :
- M$が不要と言うから
- 73 :
- 1月1日はドラフト記念日
- 74 :
- このスレを活気付かせるにはどうしたらいいものか
- 75 :
- >74 が C/C++ による CGI 用のフレームワークを作成してくださるそうです。
- 76 :
- aprを積極的に利用してみるスレにしたら
- 77 :
- 巨大なクエリ来た時にどうするのが王道でしょうか
- 78 :
- 無視する
- 79 :
- >>61情報thx。
http://acpp.sourceforge.jp/
どうもプリプロセッサっぽい感じなんだが、こういう言語仕様に踏み込むもんより、
便利関数ライブラリの方が喜ばれると思うんだがなぁ。
とは言うものの、今困ってるのはサムネ画像生成だけなんで、他はいらんけど・・・。
- 80 :
- >>77
>>78が正解でしょ。
より詳しく書くなら、まず「大量とは、どれだけなのか」を規定し、規定以上のは無視。って事で。
- 81 :
- >>65
関係ないが
char AtoH( char c ){
if( ('0' <= c) && (c <= '9') ) return c - '0';
if( ('A' <= c) && (c <= 'F') ) return c - 'A' + 10;
return 0;
}
↓
char AtoH( char c ){
if( ('0' <= c) && (c <= '9') ) return c - '0';
if( ('A' <= c) && (c <= 'F') ) return c - 'A' + 10;
if('a'<=c)&&(c<='f')) return c-'a'+10;
return 0;
}
EzWeb機が%ffみたいに送ってくるから、後々のためにもこの方が。
>>77
if(atoi(getenv("CONTENT_LENGTH"))>=1024000) return 0;
char *buf = new char[atoi(getenv("CONTENT_LENGTH"))+1];
//あとは好きにしる
delete [] buf;
- 82 :
- >81
あるんだそういうの
サンクス
ちなみに
*dst++ = ( AtoH( *++src ) << 4 ) + AtoH( *++src );
↓
*dst = AtoH(*++src) << 4;
*dst = AtoH(*++src);
dst++;
にしたらうまくいったんすよ
なんかやっぱMSだなと思た
- 83 :
- >>82
dstの位置変わってないから
*dst = AtoH(*++src) << 4;
の意味がなくなってる気もするんだが。
*dst = AtoH(*++src) << 4;
*++dst = AtoH(*++src);
dst++;
とでもしないと、dstに下位4ビットだけを突っ込んでる気がしてならないんだが。
- 84 :
- *dst += AtoH(*++src);
だた
- 85 :
- >>84
あ、漏れの書いたのが間違ってた・・
こっちのほうがまずいw
納得
- 86 :
- >>77
エラートラップ。
>>82
> *dst++ = ( AtoH( *++src ) << 4 ) + AtoH( *++src );
二箇所の*++srcのどちらが先に処理されるかは未定義。
- 87 :
- >>65>>82
>>86も言ってるが、今はコンパイラが働き者だから、1行で済ます必要は無いと思うぜ・・・。
恥を忍んで言うが、漏れが *dst++ = ( AtoH( *++src ) << 4 ) + AtoH( *++src ); こんなの書こうとしたら、
数行になってしまう。でも間違いにくいから良いんだと思ってる。勝手に。
副作用とかいちいち憶えてらんないし・・・マクロ書く時に苦しむのもやだし。
- 88 :
- >>87
いいこといった。
- 89 :
- >65
>なんかやっぱMSだなと思た
自分のバグを他人のせいにするな。
- 90 :
- ごめn
- 91 :
- なんだかどうも、プログラムの引数に「=」の文字を入れると動作がおかしいのです。
というのは、
たとえば Perl の CGI で
test.cgi?a=5
とすれば、$ENV{'QUERY_STRING'} の中身は "a=5" になるのに、
C で作った CGI (printfするだけのモノ) だと
test.cgi?a=5
としても、main(int argc,char *argv[]) の argc が 1 で引数が受け取れてないのです。
test.cgi?a5
とすれば、argc は 2 になって、argv[1] の中身が "a5" になるのですが。
そういうわけで引数に「=」を使えない理由と対処をキボン願います。
- 92 :
- ちなみに、自宅サーバで
Apache HTTP Server 2.0.49
を使ってます。Apacheの設定に問題があるのかな…
- 93 :
- 釣り…か?
Perlの$ENV{QUERY_STRING}に相当するものはstdlib.getenv("QUERY_STRING")なわけだが。
- 94 :
- 別にC言後とは関係ないけど引数で処理したかったら
hoge.cgi?-hoge+true+-fuga+false
などとすれば
./hoge.cgi -hoge true -fuga false
こうなる
あとはgetopt(3)でも使えばオプションの処理ができるかな
まあ一般的ではないな
- 95 :
- >>91
Cで作る CGI プログラムは、普通のコンソールアプリと基本的には同じだが、
main関数でもらえる「引数」と、CGI で渡される「引数」は、全くの別物だ。
main関数の「引数」は、コマンドラインで与えられるものだが、CGI の方は
サーバから環境変数を経由して与えられる。なので>>93が言ってる事を試してみそ。
>>93
釣りにしてはあまりにあまりな・・・・なので、さすがに釣りではないと思うよ。
- 96 :
- >>93-95
なる。基本的なところを忘れてました。環境変数でしたね。
getenvでできましたです。ありがとうございました。
- 97 :
- >>96
(・∀・) オメデトウ!コレカラモガンガッテイコウ!
- 98 :
- POSTの場合は?
ってゆうかそのあたりも含めて楽になるperlのCGIモジュールみたいなのとかあるんでしょうか?
- 99 :
- POSTはstdinから。
aprとか使えば少しは楽になるかも
http://apr.apache.org/
- 100read 1read
- 1read 100read
TOP カテ一覧 スレ一覧 2ch元 削除依頼 ▲
依頼されたツールを誰かが作るスレ (253)
【PHP】気軽にPHP質問スレ (727)
WebObjectsをめぐる政治的話題【粘着君OK】 (879)
PDFのWebページは糞 (702)
【RoR】Ruby on Rails Part15 (566)
【UD】白血病患者を救おう!@webprog (417)
--log9.info------------------
ツアーバス総合1 (428)
【羽田・横浜・湘南】京急バス乗務員スレ【Part7】 (254)
【しずてつ】静鉄バス13号車【ジャストライン】 (720)
上限運賃化】青森・八戸の南部バス6【大好評! (416)
高槻★高槻市バスを守る★大阪府高槻市Part3 (230)
鹿児島のバスを語ろう 5 (890)
【KSEI】京成バス乗務員専用スレ 復活 【GROUP】 (570)
広島県内のバス事情 Part18 (943)
[鯛取る]京王バスのスレ Part10 (528)
京阪シティバス+京阪宇治バス 2 (922)
神奈中・神奈交バス乗務員専用 (829)
神奈中・神奈交バス総合スレッドPart9 (952)
東急バス・東急トランセPart.29 (346)
【バス運転手】現役ウテシへ質問 26便【になりたい!】 (221)
がんばれ三重交通 その5 (868)
今日乗ったバスの車両番号を書くスレ〜その4 (452)
--log55.com------------------
( ^ω^)内藤ジメジメゲコゲコパーティー
NHK 及び(BS11以外の) BS各局 アニメ特撮実況◆335
BS11 アニメ+ ANIME+ 実況◆1489 PERSONA5
【実況&雑談するスレ】すれすれスレ
TOKYO MXアニメ実況★4611
【第196回常会】国会中継総合スレ1787
2017年東京都議会議員選挙 開票実況スレ1
【第196回常会】国会中継総合スレ1788
-