- ベストアンサー
一番簡単にチャットソフトを作るには?
- VB6.0を使い、できるだけ簡単にチャットソフトを作りたいと考えています。複数人が同時にメッセージを交換できる機能と、グループごとにメッセージを交換できる機能を備えています。
- VB6.0でチャットソフトを作るのは比較的難度が高いため、腰が引けています。ファイル共有を利用した簡易的なチャットソフトの作成方法も考えられますが、共有の難しさを感じています。VB.NETを使えば比較的簡単にチャットソフトを作ることができますが、VB6.0とは異なる言語として感じられ、腰が引けています。
- VB6.0でできるだけ簡単に上記の機能を備えたチャットソフトを作りたいと考えています。VB6.0を使用する方法や、VB.NETを使用する方法など、簡単なヒントや情報をお持ちの方がいらっしゃいましたら、教えていただけませんでしょうか。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
socket とは、(元々はUNIXで)TCP/IPを用いたネットワーク通信を行うために作られたライブラリです。 UNIX以外のOSでも、今ではTCP/IPを行う代表的なライブラリになっており、 Windows用のsocketが「winsock」です。 つまり、VB6でも、そのものずばり「winsockコントロール」が、「ソケットプログラミング」のためのコントロールなわけです。socketベースでプログラムを組むのなら、VB6でも.netでも難易度は変わりません。 ただし、socketは、TCP/IPでの通信が何でもできる分、HTTP専用なInetコントロールなんかと比べるとちょっと複雑ではあります。 ですが、実際には、初期化などの「おまじない」的な部分がちょっと面倒ですが、 winsockによる通信そのものは、VB6で組んでもたいして難度は高くないです。 一言でいうなら、Winsockでは、Winsock コントロール2つがペアになっていて、 あるPCのWinsockコントロールでSendData を呼び出すと、そこで引数に指定したデータが それとペアになっている別のPCのWinsockコントロールの GetData で受け取ることが出来る、 というただそれだけの仕組みです。 おそらく、チャットソフトを作る上で、一番難しいのは、プログラミング部分ではなく、 ここでやりとりするデータに「どういう意味を持たせるか」という「プロトコルの設計」部分になるかと思います。 たとえば、3人でチャットするシステムだったら、ある一人からの書き込みは、残り二人にそれぞれ送る、といった仕組みで問題ないでしょう。 もし、300人でチャットするシステムだったら、ある一人からの書き込みを残299人にそれぞれ送る、といった仕組みだと、参加者300人がそれぞれ299人の送り先にデータを送るという「300×299=89700本のデータの流れ」ができるという非現実的なものになってしまいます。 そういう規模になってくると、中央にチャットのメッセージをとりまとめるサーバを置いて、 各書き込みは、サーバの方に送り、サーバは受け取ったメッセージを300人の全参加者に配信する、 といった仕組みにするのが普通です。その場合、全体でのデータの流れは600本で済みます。 その代わり、「サーバ」という特別な役割を持ったプログラムが必要になります。 その場合、データには、メッセージ文章と一緒に「全員に送るのかグループ内にだけ送るのか」といった情報も付けておく必要があります。 さらには、TCP/IPで通信するには、必ず通信相手のPCの「IPアドレス」が必要になります。 参加者が使用するPCは不変でPCに割り当てられたIPアドレスが変わらないのであれば、プログラム中にIPアドレスを埋め込むといったことも可能ですが、 そうでなければ、参加者のIPアドレスを決定するという、いわゆる「ロビーサーバ」といった機能設計が必要になります。 そういった「設計」の部分が、チャットソフトを作る上での最大の難点になるかと思います。 これは、プログラミング言語とは関係ない、それより上位の設計の段階の話ですので、 VB6だったら簡単とか難しいとかそういったことにはなりません。
その他の回答 (1)
- todo36
- ベストアンサー率58% (728/1234)
まずはサンプルを探してみて、 どういう仕組みで動いているか。 どういうライブラリを使っているかを調べてみるのがいいでしょう。 VB(VS2008)+WCF http://msdn.microsoft.com/ja-jp/library/bb690929(v=vs.90).aspx VB(VS2003) + Socketクラス http://codezine.jp/article/detail/22
お礼
ご回答ありがとうございます。 また、情報をお調べいただき、リンクまで張ってくださり、本当にありがとうございました。 今回はwinsockについて勉強したいと思いますので、まずは2番目を参照させていただきます。 一旦締め切らせていただき、ベストアンサーは他のご回答者様とさせていただきますが、どうぞお許しいただき、またお力をお貸しいただけますと幸いです。 ありがとうございました。
お礼
ご回答ありがとうございました。 非常にわかりやすくご解説いただきましたので、初心者の私にも理解することができました。なるほど、ソケットとは新しい魔法の技術ではなく、winsockだったのですね。恥ずかしながら、そこから既に知りませんでした。 また、.NETでも6.0でも難度が変わらないというお言葉に、勇気が出てきました。引けていた腰が、少し前に戻ってきました。 幸いなことに、参加者のIPは固定ですから「ロビーサーバ」は要らなさそうですし、参加人数も10名以内なので、たとえ経路をすべて直に入力してもそれほど無茶ではなさそうです。 まずはWinsockについて情報を集め、自分なりに取り組んでみます。そして、もしまた解らないことが出てきましたら、どうかお力をお貸し下さい。