ネットワークプログラミングの知識0でこれからC/C++でwindowsで動くチャットソフトを作ることを目標に勉強しようと考えています。
一応、C/C++言語、Win32プログラミングは独学で勉強しました。
そこでいくつか質問させてください。
まず、どんなチャットソフトかというと
WEBページを使ったチャットではなく、windowsで動くソフトという形のチャットソフト。過去ログも保存されて、チャットソフト起動するとみることができる。昔、ローカルエリアに接続されたコンピュータ同士の通信をするプログラムを少しだけ作ったのですが、どこからでも通信を行うチャットを作りたいです。
ネットワークプログラムについてまったくわからないのでここからは自分の想像なので間違った知識があるかと思いますが、これを実現するにはサーバーを作らないといけないと思うのですが、自宅サーバーではなくレンタルのサーバーを借りて、実現したいと考えています。
この場合どんな知識を身に付ければ実現できるのでしょうか?C言語でサーバープログラム(レンタルサーバーで動く)は作れないですよね?
何を使えば良いのでしょう?サーバーってどういう仕組みで過去ログなどを保存できるのでしょうか?そもそも過去ログなどのデータを保存しておくことはできるのでしょうか?レンタルサーバーを使うと他にどんなプログラムを作ることができるでしょうか?
どんな知識を身に付ければ良いかアドバイスください。
何かお薦めの書籍やサイト等あったら教えてください。
特におすすめなネットワーク関係の書籍あったら教えてください。基本的なネットワークの仕組みが詳しく書かれていてサンプルプログラムなどがあればうれしいです。
No.3ベストアンサー
- 回答日時:
> クライアント側をwindowsで動くソフトという形でサーバー側をCGIなどを利用したWebサーバベースで作ることは可能なのでしょうか?
可能です。Webのブラウザとサーバの間は、「ポート80番」を使って「HTTPプロトコル」で通信しており、WebサーバがCGIやPHPなどのプログラムを動かします(ですから、CGIやPHPでは、直接ネットワーク通信に関するコードを書く必要はありませんし、かけません。Webサーバ経由でクライアントとの情報の受け渡しを行います。)
自作Windows用ソフトでも、「HTTPプロトコル」を使えば、Webサーバ経由でCGIと通信することは可能です。
> Webサーバベースとそうでないサーバの違いってなんでしょうか?
通常の安価なレンタルサーバでは、上述の「Webサーバ」はプロバイダ側が用意していて、ユーザー自身が作れるのは「CGIやPHPのプログラム」までです。それ以外のプログラムをサーバ側で動かすことは出来ません。
一方、ちょっと高めのホスティングサービスだと、Webサーバ以外のプログラムを動かすことができます。その場合、ポート80番のHTTPプロトコル以外で通信する「自作のサーバプログラム」も動かすことが可能です。
それと、Webサーバベースのデメリットですが、HTTPプロトコルは基本的に「最初にクライアントからサーバへリクエストを送り」「サーバからの返答がクライアントに返される」という流れになりますので、「データの流れがそれぞれ1回かぎり」であるという問題があります。
「チャット」では、クライアント→サーバ、サーバ→クライアント、どちらのデータの流れも順不同に発生しますので、普通はプロトコルの設計としては「コネクションを張りっぱなしで互いにデータを送りあう」ようにします。ですが、HTTPベースではそれができませんので、送るべきデータが発生するたびに、一々コネクションを張り直す必要があります。
> 過去ログを吐き出すプログラムはサーバー側で、レンタルサーバーの領域に保存しておくことができるということでしょうか?
そうです。通常はCGIでもPHPでも、レンタルサーバ側でファイルを読み書きできますので、そこに「チャットのログ」を保存しておくことが可能です。
No.2
- 回答日時:
> C言語でサーバープログラム(レンタルサーバーで動く)は作れないですよね?
質問者さんは、ブラウザ経由ではなく独自プログラムでの通信をしたいようですから、
サーバ側も、Webサーバでない独自のプログラムを動かす必要があります。
となると、問題は
・Webブラウザ経由でないサーバプログラムを動かせるかどうか
・C言語で書いたプログラムを動かせるかどうか
の二つあります。
無料だったり安いレンタルサーバでは、「CGI」「PHP]など、WebブラウザからWebサーバ経由で起動するプログラムしか動かすことができません。
いわゆる「デーモン」(daemon)と呼ばれる「常駐プログラム」を動かせるようなホスティングサービスを選ぶ必要があります。
後者については、そういうデーモンを動かせるような所なら、まず大丈夫です。普通のデーモンソフトの場合、C言語で書かれてる場合の方が多いですし。
> サーバーってどういう仕組みで過去ログなどを保存できるのでしょうか?
> そもそも過去ログなどのデータを保存しておくことはできるのでしょうか?
デーモン(サーバープログラム)も、単に起動しっぱなしで、クライアントからのネットワーク通信をいつでも受信できるようになってるだけ。
過去ログを保存したかったら、単にファイルに書き出しておくだけです。そのあたりは普通のプログラムと同じです。
> レンタルサーバーを使うと他にどんなプログラムを作ることができるでしょうか?
> ネットワークプログラミングの知識0
> この場合どんな知識を身に付ければ実現できるのでしょうか?
そんなレベルからだと、いきなりそういうチャットプログラムを作るのは非常に難易度が高いです。「設計」でつまづく可能性が高いと思います。
まずは、Webベースのチャットソフトを作るところから始めた方が良いかと思います。
それが出来たら、クライアント部分を「Webブラウザ」ではなく「windowsで動くソフトという形のチャットソフト」に作り替える、という流れで。
そうすれば、サーバ側はWebサーバベースになりますので、
上述の様に、独自のデーモンを動かせるような高機能ホスティングでなくても、
単に「CGIが使えるだけ」レベルのレンタルサーバでも動かせるようになります。
レンタルサーバ側についても、探せば「C言語によるCGI」をサポートしている所は結構あります。
そういう所を使えば、比較的安価にサーバ側を実現できます。
CGIの場合、サーバ側では「ネットワークプログラミング」に関する知識は基本的に不要です。
そのあたりはWebサーバ側が全部やってくれますので、CGIは主に文字列処理(クライアントからテキストを受け取って、クライアントにテキストを返す)をするだけです。
この回答への補足
回答ありがとうございます。
クライアント側をwindowsで動くソフトという形でサーバー側をCGIなどを利用したWebサーバベースで作ることは可能なのでしょうか?
Webサーバベースとそうでないサーバの違いってなんでしょうか?
過去ログを吐き出すプログラムはサーバー側で、レンタルサーバーの領域に保存しておくことができるということでしょうか?
No.1
- 回答日時:
共有レンタルサーバ(1台のコンピュータを多数のユーザが使う)では無理でしょう。
ウェブサイトとウェブプログラムぐらいしか許可しないと思います。専用サーバ(1台のコンピュータを一人で使う)でルート権限がもらえれば何でも出来ると思いますが費用も高いです。
参考にさくらの専用サーバで一番安いのが7800円/月です
http://server.sakura.ad.jp/dedicated/entry/index …
レンタルサーバのOSはLinuxが多いでしょうからとりあえず自宅にLinux環境を作ってローカル内でテストしてからですね。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・人生のプチ美学を教えてください!!
- ・10秒目をつむったら…
- ・あなたの習慣について教えてください!!
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・【大喜利】【投稿~9/18】 おとぎ話『桃太郎』の知られざるエピソード
- ・街中で見かけて「グッときた人」の思い出
- ・「一気に最後まで読んだ」本、教えて下さい!
- ・幼稚園時代「何組」でしたか?
- ・激凹みから立ち直る方法
- ・1つだけ過去を変えられるとしたら?
- ・【あるあるbot連動企画】あるあるbotに投稿したけど採用されなかったあるある募集
- ・【あるあるbot連動企画】フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?
- ・映画のエンドロール観る派?観ない派?
- ・海外旅行から帰ってきたら、まず何を食べる?
- ・誕生日にもらった意外なもの
- ・天使と悪魔選手権
- ・ちょっと先の未来クイズ第2問
- ・【大喜利】【投稿~9/7】 ロボットの住む世界で流行ってる罰ゲームとは?
- ・推しミネラルウォーターはありますか?
- ・都道府県穴埋めゲーム
- ・この人頭いいなと思ったエピソード
- ・準・究極の選択
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Ryzen 3700(無印)はWin11に対応...
-
三目並べ
-
API、OCX、DLLって何でしょう?
-
VB.net エラーメッセージを英文...
-
directxとプログラミング言語
-
Visual Studio Express Edition...
-
c言語の勉強方について
-
VBのフリーウェアについて
-
C言語のHP-UXからLinuxへのポ...
-
AIなんて所詮人間のプログラ...
-
検索エンジンの作成
-
ソーストレースの仕方
-
Cプログラムの解析(関数の呼び...
-
win版とmac版などがあるのはなぜ?
-
VBプログラムをEXCEL VBAに移植...
-
プログラムの内容理解
-
C言語 初級編
-
プログラミング言語を習得した...
-
C言語でゲームのプログラミング
-
C言語でSMTPを使ったプログ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
API、OCX、DLLって何でしょう?
-
Ryzen 3700(無印)はWin11に対応...
-
VB.net エラーメッセージを英文...
-
VBプログラムをEXCEL VBAに移植...
-
コンソールアプリでファイル選...
-
VBS:コンピュータ名を取得し、...
-
UNIX環境でのCプログラム上でC...
-
SNMPトラップ情報をC#.netで作...
-
変数の大きさを超える代入
-
Perl5とActivePerl
-
プログラミング 素数か素数では...
-
私は23歳です 新たにプログラ...
-
VB2005の自作ブログラムをWin10...
-
ソフトイーサ開発者(登大遊 氏)...
-
小中学校でプログラミングなん...
-
ASPとASP.NET両方の...
-
JCA手順
-
プログラム言語の種類
-
i,j,k
-
C言語のHP-UXからLinuxへのポ...
おすすめ情報