2012年購入の
おすすめCD



RAGE [21]

僕らのRAGEが送り出す超強力なパワーメタルアルバム! ますますヘヴィに、ますますメロディアスになり、RAGEの快進撃はとどまるところを知らない……。


Riot [ Immortal Soul ]

近年の作品ではもっとも激しく印象的な作品! バンド名を冠した疾走曲RIOTはひたすら熱い!

2011年購入の
おすすめCD



Volcano [ Mythology ]

泣きのメロディが炸裂しまくる国産パワーメタル!


Wizards [ The Black Night ]

音楽性をいろいろ変えたりするブラジル産メタルバンドが、ドラマティック路線で復活!


Stormwarrior [ Heading Northe ]

キャッチーで暑苦しい疾走パワーメタル!




2010年購入の
おすすめCD


Secret Sphere
Archetype
イタリアンシンフォニックメロスピ。2ndに並ぶ大傑作ではないか。

Iron Fire
To the Grave
デンマークの熱血パワーメタルバンド。力押しと見せかけて細かなアレンジも効いている抜け目のないバンド。


When worlds collide

熱すぎる疾走パワーメタル。聴いてるだけで体中からいろいろな汁があふれ出す。


Leave This World

キレのいいリフと哀愁のメロディでグイグイ押す正統派ヘヴィメタル!


Strings to a Web

僕らのRAGEが送る隙のない傑作。バラエティ豊かな曲をとりそろえている。


Attero Dominatus

歴史上の戦争をテーマにした勇壮かつ悲哀に満ちたメタル。クワイアが雄々しい。


十五年ぶり、まさかの新作。ごく普通の正統派メタル。まぁ正直言っておすすめというほどでもないかな……。アルバムの存在に涙が出る一枚。

2009年の
おすすめCD



ひたすら熱く疾走するブラジリアン熱血メタル。


熱く濃く男臭い、戦士のための王道パワーメタル。聴くだけで汗がドバドバ。


僕らのRAGEのミニアルバム。表題作「Never Give Up」のためだけに買っても損はない! 友情パワーッ!!

2008年の
おすすめCD



ヘルベースビーターズ



カーヴド・イン・ストーン



オール・マイ・ライフ



ラーキング・フィア


2007年の
おすすめCD



ニュー・レリジョン


第八の罪


MKII


アゴニー~ギフト・オヴ・ライフ


タイム・トゥ・ビー・フリー
 

2006年の
おすすめCD



リヴェンジ


ザ・シャドウ・キャビネット


スピーク・オヴ・ザ・デッド


2005年の
おすすめCD



DGM [ Misplaced ]


HEED [ The Call ]


Nocturnal Rites [ Grand Illusion ]

2004年以前の
おすすめCD



Rage [ Sound Chaser ]

2006 年 10 月 15 日

WEBサーバにデータを送信、受信してみる。

Filed under: プログラム — タグ: — 坂葉 @ 18:46:48

 ネットランキング用のプログラムを作ってみる。
 オレのサイトの各種ネットランキングを見ればわかるとおり、ほとんど誰も使っていなくてあらためてc++で作る意味が皆無に近いのだが、それでも作りたいというのがプログラマの心だろう。
 今は誰にも相手にされず無視ゲー(みんなから無視されネットの海に消えていくあわれ極まりない悲惨なゴミゲーム、通称ウジ虫ゲーのこと。無視ゲーとはつまり「ウジ虫ゲーム」の略である)の烙印を押されているオレのゲームだが、いつの日か、ランキングcgiがアクセス過多になってサーバ会社から怒られるようなおもしろゲームを作るのがオレの目標である。
 ちなみに、もう言わなくてもわかるだろうと思うが、このブログはオレがみなさんにプログラムを教えるという趣旨ではなく、オレが勉強していくというものである。口調が偉そうだからC++入門講座だと勘違いする人がいるかもしれない。しかし、オレは教える側ではなく教わる側なのだ。
 勉強の過程で悩んだことを包み隠さず赤裸々に綴っていく、恥辱の羞恥ブログなのである!!

 wininetというのを使うといいらしい。今回は、とりあえずデータのアップ&ダウンをするだけのプログラムを作ってみた。
 BCC 5.5+BCC DEVELOPPER用
http://www.sm.rim.or.jp/~shishido/httpt.html
 とりあえずここのサンプルを丸写ししてちょっとだけ改造した。丸写しとは情けないが、プログラムとはこうやっておぼえていくものである。
 cgiに文字列を送るのは、文字列を付加したurlをオープンするだけでできる。掲示板書き込みとかをするのはもっとめんどくさいらしい。
 プロジェクト→プロジェクト設定→アプリケーション「ターゲット」→コンソールアプリケーションで製作。
 こんなこと言うまでもないが、なにを隠そうこのオレ坂葉晴雄は、はじめてc++に触れたときwindowsアプリケーションにしながら「main()」でプログラムを作り、ちっとも動かなくてかなり悩んだことがあるのだ! バカ丸出しさっさと死ねやこのボケナスカス大便!と言いたい方もいるだろうが、初心者とはつまりこういう部分がわからない人のことを指すのである。
・#include
・#include
 の二つのファイルをインクルードする。wininet.hだけではだめらしい。
 最初は
・外部シンボル ‘InternetOpenA’ が未解決
・外部シンボル ‘InternetOpenUrlA’ が未解決
・外部シンボル ‘InternetReadFile’ が未解決
・外部シンボル ‘InternetCloseHandle’ が未解決
 が出て動かなかった。
 いろいろ調べてみたところ、「wininet.lib」をコンパイラからリンクする必要があるらしい。
 こういうのはパスが通ってて自動的にリンクしてくれるものだと思っていた。
「プロジェクトに追加」で追加するんじゃなくて、「プロジェクト設定」から追加する。
 こういうところがまさに初心者。ベテランの方は、てめえのようなゴミクズがえらそうにプログラムについて書くんじゃねえよキモオタチンポ級の汚物!と思われたことだろう。しかし、こうして単純なミスを記しネットの大海に流しておくことが、キモオタチンポ級の汚物を減らし美しい社会を作ることに繋がると、オレは信じて疑わない。
 BCC DEVELOPPERでは、プロジェクト→プロジェクト設定→リンクに「wininet.lib」を追加する
 wininet.libは、うちの環境では「D:\borland\bcc55\Lib\」にあった。
 エクスプローラのファイル名検索で見つかった。
 検索するためには、適当なフォルダをエクスプローラで開き、おもむろに[F3]を押すのだ。すると検索コンパニオンというのが開くので、「ファイルとフォルダすべて」を選んで「winnet」とか入れて検索する。
 いい加減にしろよこの脳味噌ゼロ的下等生物が!と思うのはわかる。だちょっと待ってほしい。これも知らない人がけっこういたりするのだ。たとえばこのオレ。知ったのはwinを使い出して何年かたったころで、それまではずっと、「マイコンピュータで右クリック→検索」を使っていたのだ。
 ソースを張っておく。丸々コピペで動く。が、あらかじめcgiを作っておき、ローカルで動作させておく必要がある。
 webサーバには、AN HTTPD DAEMON http://www.st.rim.or.jp/~nakata/ を使用した。perlもインストールしておく必要がある。
 webサーバソフトの設定方法は、ソフトの解説を読もう。ここで説明したいが、もうだいぶ前に導入したのでやりかたを忘れた。けっこうめんどくさかった気がする。
 AN HTTPDではオプションで指定したフォルダのルートが”http://localhost/”または”http://127.0.0.1/”というurlになる。デフォ ルトではインストールしたフォルダだったかな。つまり、http://localhost/ をホームページのルートのように扱えるわけだ。
 サーバソフトを起動し「http://localhost/***.cgi」でアクセスするとcgiを実行できる。当たり前の話だが、ローカルで動作させる場合はパーミッションの設定は必要ない。なぜこんなことを書くのかというと、オレはパーミションの設定が必要だと思っていたからだ。本当にオレという男は頭が悪すぎる。
 下のcgiをテストするときは http://localhost/data_save.cgi?manko とブラウザのurl欄に打ち込む。すると、cgiと同じフォルダにmankoと書かれたdata.logファイルが作成される。もしきみがエロい男ならば、ファイルを確認したとたん思わず勃起してしまうに違いない。
#include
using namespace std;
#include
#include
#include
#include
string name_url;
string name_cgi;
string name_log;
string updata;
void inet_up();// データアップ用関数
void inet_down();// データダウン用関数
int main() {
char input_data[256];// アップ用データ保存変数
name_url =”http://127.0.0.1/”;// urlの名前
name_cgi =”data_save.cgi?”;// cgiの名前
name_log =”data.log”;// ログファイルの名前
cin >> input_data;// アップ用データの入力
updata=input_data;// char型はstring型にそのまま渡せる
inet_up();// データアップロード
inet_down();// データダウンロード
return 0;
}
////////////////////////////////
// データアップロード関数
////////////////////////////////
void inet_up() {
HINTERNET hInet;// ネット接続用ハンドル宣言
HINTERNET hFile;// urlハンドル宣言
// ハンドル作成 ユーザーエージェント名 “data_up_down_test”
hInet=InternetOpen(“data_up_down_test”,INTERNET_OPEN_TYPE_DIRECT,NULL,NULL,0);
string url_cgi;
char url_cgi_ch[256];
// url設定
url_cgi=name_url+name_cgi+updata;
// InternetOpenUrlにstring型は渡せないのでchar型にする
strcpy(url_cgi_ch,url_cgi.c_str());
// URLオープン、データアップロード
// “***.cgi?###”をオープンすると、cgiに?以降の文字(###)を渡すことができる
// 今回の場合は、”http://127.0.0.1/data_save.cgi?###”の###を渡す。
// 「###」はcinで入力するchar input_data。
hFile=InternetOpenUrl(hInet,url_cgi_ch,NULL,0,INTERNET_FLAG_RELOAD,0);
// cgiのurlの表示
cout < < url_cgi_ch << '\r '; // 終了処理 InternetCloseHandle(hFile); InternetCloseHandle(hInet); } //////////////////////////////// // データダウンロード関数 //////////////////////////////// void inet_down() { HINTERNET hInet;// ネット接続用ハンドル宣言 HINTERNET hFile;// urlハンドル宣言 LPTSTR lpszBuf;//データを読み込むバッファ DWORD dwSize;//謎 string url_cgi; char url_cgi_ch[256]; // 1024文字ぶんのバッファを用意 lpszBuf=(LPTSTR)GlobalAlloc(GPTR,1024); // ハンドル作成 ユーザーエージェント名 "data_up_down_test" hInet=InternetOpen("data_up_down_test",INTERNET_OPEN_TYPE_DIRECT,NULL,NULL,0); // url設定 url_cgi=name_url+name_log; // InternetOpenUrlにstring型は渡せないのでchar型にする strcpy(url_cgi_ch,url_cgi.c_str()); // URLオープン hFile=InternetOpenUrl(hInet,url_cgi_ch,NULL,0,INTERNET_FLAG_RELOAD,0); // ログファイルのurlの表示 cout << url_cgi_ch << '\r '; // ファイル読み込み 1023文字読み込む InternetReadFile(hFile,lpszBuf,1023,&dwSize); cout << lpszBuf; // 終了処理 InternetCloseHandle(hFile); InternetCloseHandle(hInet); } /* #/////////////////////////////////////////////////// # おまけ # ログファイル記録用cgi # 送られたデータをdata.logのファイル名で記録する #/////////////////////////////////////////////////// #!/usr/local/bin/perl # これがないとcgi単体で動かしたときエラーになる # (無くても構わない) print "Content-type: text/html\r \r "; # 「***.cgi?」以降の文字列を$dataに格納 $data = $ENV{ 'QUERY_STRING' }; # ログファイル名をdata.logにする $fn="data.log"; # 書き込み用でファイルをオープン open (OUT,">“,”$fn”);
#書き込む
print OUT $data;
#ファイルを閉じる
close(OUT);
exit;
*/
blind guardian
manticora
poison black
divine fire
ever grey
wuthering heights
参考になったらクリック!

2 Comments »

  1. 非常に参考になりました。
    ありがとうございます。
    ただ、CGI作成時エラーが起きて苦戦してましたが

    open (OUT,”>“,”$fn”);

    ↑”が、”に(全角)なってますよ。

    コメント by Ma — 2009 年 5 月 15 日 @ 10:49:35

  2.  以前使っていたブログでは一部の半角記号が使えなかったので大文字で代用していました。

     どうせ誰も見てないようなブログなので注意書きもせずそのままでした。
     すみません。

     あらためて見直したら、なぜか最後に購入予定のCDまで書いてあるし……。

    コメント by 坂葉 — 2009 年 5 月 16 日 @ 20:44:41

RSS feed for comments on this post. TrackBack URL

コメントは承認制です。名前、メール、HPアドレスは空欄でも構いません。

*

Powered by WordPress