ab.com コミュニティ

ActiveBasicを通したコミュニケーション
現在時刻 - 2024年3月28日(木) 17:28

全ての表示時間は UTC+09:00 です




新しいトピックを投稿する  トピックへ返信する  [ 8 件の記事 ] 
作成者 メッセージ
投稿記事Posted: 2011年8月03日(水) 02:55 
オフライン

登録日時: 2009年3月29日(日) 15:45
記事: 106
お世話になっています。

今回、Skypeのようなチャットツールの簡易版(とりあえずテキストのやり取りが出来る程度)を製作しようと張り切っています。(夏休みですし)
ネットワークプログラミングをやるのはこれが初めてのようなものです。

さまざまなサイト様をめぐりながらプログラムを作っているのですが、
やはり分からないことだらけで困っています。

1:PCに接続できない
昔の環境は図1のような形だったのですが、現在、事情により図2のような環境になっています。

※リンク修正
http://www.holygate.jpn.org/Data/zu.jpg


図1の環境では普通にIPアドレスを指定するだけで接続できたのですが、
図2の環境ではそれだと接続できずにエラーが返ってきます。
エラーが返ってくるのは、connect関数です。

ただし、図2の環境でも、IPアドレスをローカルのもの(192.168.1.*)で、
192.168.1.4とすると接続できました。
ただ、これをネットワーク上のパソコンでやるときはどうしたらいいかがわかりません。




2:ソフト内で行われている処理と非同期通信
下のサイト様を拝見しながらやっていました。
http://yonex1.cis.ibaraki.ac.jp/~yoneku ... ure03.html

順序だてて詳しく説明してくださっているのですが、いまいちよく分からない部分があります。

今回の目標はチャットツールで、上のサイト様を見る限り、
ソフトひとつでクライアントとサーバーの機能を持っていないといけないと読み取れます。
また、常に相手からの応答を確認しないといけません。

とりあえず、常に相手からの応答の確認(非同期通信?)は、
WSAAsyncSelect関数を使うということで、
WSAAsyncSelect(ソケット関数の戻り値,hMainWnd,???,?)
と、半分はてなですが、
特に第三引数の値がいまいち分かりません。

おそらく、コールバック関数のdwMsgに値が返るようにするのかな?
と思っていますが、結局何を指定するのかが分かりません。

第四引数は、そのdwMsgにメッセージ(「接続してきた」や、「データが来た」など)を通知するものを指定するのだと思っています。

そして一番分からないのが、この関数をどのように使うのか。
関数を呼んで、そこからメッセージが来るまでずっとループさせておけばいいのでしょうか。


まったく分かっていなくて申し訳ないですが、ご存知の方、お分かりの方がいらっしゃいましたらご教示ください。
お願いします。

_________________
↓個人的ソフト置き場
http://www.software.jpn.org/
↓萌えゲー製作とかしていたい
http://www.holygate.jpn.org/


最後に編集したユーザー 水波形 [ 2011年8月06日(土) 18:46 ], 累計 1 回

通報する
ページトップ
 記事の件名:
投稿記事Posted: 2011年8月06日(土) 14:47 
>>昔の環境は図1のような形だったのですが、現在、事情により図2のような環境になっています。

この図からは、水波形さんの環境がわかりませんょ。
PCは複数台書いて、IP体系やルータの設定も必要です。
また絵中のネットワークって何を指しているのですか?、Pingは通りますか?、ルータのポートは開けていますか?、PCのファイヤウォールは大丈夫ですか??


>>特に第三引数の値がいまいち分かりません。
WSAAsyncSelectは使った事が無いので確かではありませんが、スレッドなどから呼び出さなければhMainWndで良いと思います。

>>関数を呼んで、そこからメッセージが来るまでずっとループさせておけばいいのでしょうか。
受信するとWindowsメッセージが飛んで来るので、UINTで指定したメッセージ(例えばWM_SOCKET)をGetMessageなどで取れば良いのでは。


通報する
ページトップ
   
投稿記事Posted: 2011年8月06日(土) 18:45 
オフライン

登録日時: 2009年3月29日(日) 15:45
記事: 106
Tako様、ご返信ありがとうございます。
引用:
PCは複数台書いて
えっと、PCは本当に1台しかないんです。
引用:
IP体系やルータの設定も必要です。
Skypeは、これを自動で設定しますよね。
どのようにしているのでしょうか。
おそらく、それが知りたくて探しているのだと思います。
引用:
また絵中のネットワークって何を指しているのですか?
分かりにくくてすいません。
普通にケーブルで、ネットワーク回線につないである部分のことです。
引用:
Pingは通りますか?
どこへのか分かりませんが、とりあえず通っていると思います。
ネットワークには接続できています。
引用:
ルータのポートは開けていますか?
昔の環境では出来ていたので、あいていると思います。
引用:
PCのファイヤウォールは大丈夫ですか?
XPと7で、仕様が違うのでしたら分かりませんが、セキュリティー対策ソフトは同じものを使っています。


全くどのようにしたらいいのかが本当に分からないのです。
でも、ネットワーク系には触れてみたいので必死にサイトをめぐっています。
すいませんが、ご存知でしたらお手伝いください。お願いします。


図のほうがリンク切れになっているので、借りているサーバーにアップロードさせていただきます。
http://www.holygate.jpn.org/Data/zu.jpg

_________________
↓個人的ソフト置き場
http://www.software.jpn.org/
↓萌えゲー製作とかしていたい
http://www.holygate.jpn.org/


通報する
ページトップ
 記事の件名:
投稿記事Posted: 2011年8月07日(日) 00:39 
オフライン

登録日時: 2005年5月31日(火) 17:59
記事: 899
お住まい: 東京都
多くのアプリケーション同様に手動で設定するのが最も簡単と思います(というより、私なら諦めてそうしちゃいます)。つまり、ルータ(この場合はおそらく無線親)で「外のネットワークからTCP(またはUDP)何番宛に接続が来たら、パソコン192.168.1.*へ転送する」という、いわゆるNAPTとかIPマスカレードの設定を行うことです。

そんな設定をしなくても動くSkypeは「ホールパンチング」って結構高度な技を使っています。
http://www.itmedia.co.jp/enterprise/art ... 070_3.html
私もやったことないので実現するプログラム例は示せないですし、(すべての場合を網羅するには)中央サーバが必要な方法ので水波形さんの要件にもそぐわないと思います。

ホールパンチング以外に何か方法がないかというと、あと1つ心当たりがあります。上記のようなルータへの設定を自動的に行うUPnPという技で、これはWindows Live Messengerが使っています。UPnPも私はプログラミングであつかったことがないので詳細は知らないです。

あんまり前向きなことが言えなくてすみません。


通報する
ページトップ
 記事の件名:
投稿記事Posted: 2011年8月07日(日) 09:36 
>>えっと、PCは本当に1台しかないんです。

であれば、どちらの系統でも127.0.0.1で大丈夫だと思います。

>>Skypeは、これを自動で設定しますよね。
>>どのようにしているのでしょうか。

ネットワークの本を何冊か読破してスキルアップしてくださいとしか言い様がありません。
まずは、ルータなどを超えないシンプルな状態から初めるべきだと思います。


通報する
ページトップ
   
投稿記事Posted: 2011年8月26日(金) 00:58 
オフライン

登録日時: 2009年3月29日(日) 15:45
記事: 106
イグトランス様
引用:
そんな設定をしなくても動くSkypeは「ホールパンチング」って結構高度な技を使っています。
http://www.itmedia.co.jp/enterprise/art ... 070_3.html
私もやったことないので実現するプログラム例は示せないですし、(すべての場合を網羅するには)中央サーバが必要な方法ので水波形さんの要件にもそぐわないと思います。
なるほど・・・
解説などを拝見しましたが、まったくわかりません。
(超勉強不足)

引用:
ホールパンチング以外に何か方法がないかというと、あと1つ心当たりがあります。上記のようなルータへの設定を自動的に行うUPnPという技で、これはWindows Live Messengerが使っています。
UPnPですか。
こちらもつかったことがなく、まったくわかりません。


しかしご意見いただきありがとうございます。
とりあえず、UPnPを勉強していきたいと思います。

Tako様、イグトランス様
本当にありがとうございました。

_________________
↓個人的ソフト置き場
http://www.software.jpn.org/
↓萌えゲー製作とかしていたい
http://www.holygate.jpn.org/


通報する
ページトップ
 記事の件名: 参考に
投稿記事Posted: 2011年10月03日(月) 23:57 
時間がないのでコードやらを追いかけてはいないのですが
2年程前くらいからソケットについて勉強しており
よく参考になった本があります。
もちろんこちらの方にもコードを載せてお世話にもなりました。
ちょっと高いですが、
Winsock2 プログラミング ルイス・ナッパー著
ISBN4-7973-3044-9
です。
色々分ることがありましたので良かったらご覧下さい。


通報する
ページトップ
   
 記事の件名:
投稿記事Posted: 2011年11月25日(金) 10:08 
オフライン

登録日時: 2009年3月29日(日) 15:45
記事: 106
>kobo様
返信遅くなってもすいわけありません。
紹介していただいた本を探しまわったのですが、
もう出回っていないようです><
古本屋にも探しに行こうと思います。

ありがとうございました

_________________
↓個人的ソフト置き場
http://www.software.jpn.org/
↓萌えゲー製作とかしていたい
http://www.holygate.jpn.org/


通報する
ページトップ
期間内表示:  ソート  
新しいトピックを投稿する  トピックへ返信する  [ 8 件の記事 ] 

全ての表示時間は UTC+09:00 です


オンラインデータ

このフォーラムを閲覧中のユーザー: なし & ゲスト[13人]


トピック投稿:  可
返信投稿:  可
記事編集: 不可
記事削除: 不可
ファイル添付: 不可

検索:
ページ移動:  
cron
Powered by phpBB® Forum Software © phpBB Limited
Japanese translation principally by ocean