ab.com コミュニティ

ActiveBasicを通したコミュニケーション
現在時刻 - 2024年4月27日(土) 20:05

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




返信する
ユーザー名:
件名:
メッセージ本文:
メッセージを入力してください。60000 字まで入力できます。 

フォントサイズ:
フォントカラー
オプション:
BBCode: ON
[img]: ON
[flash]: OFF
[url]: ON
スマイリー: OFF
BBCode を無効にする
URL を自動的にパースしない
クイズ
お手数ですがカタカナで「エービー」と4文字を入力してください。:
答えを正確に入力してください。答えられるかどうかでスパムボットか否かを判定します。
   

トピックのレビュー - IPネットワーク通信プログラムを作成したい
作成者 メッセージ
  記事の件名:   引用付きで返信する
>kobo様
返信遅くなってもすいわけありません。
紹介していただいた本を探しまわったのですが、
もう出回っていないようです><
古本屋にも探しに行こうと思います。

ありがとうございました
投稿記事 Posted: 2011年11月25日(金) 10:08
  記事の件名:  参考に  引用付きで返信する
時間がないのでコードやらを追いかけてはいないのですが
2年程前くらいからソケットについて勉強しており
よく参考になった本があります。
もちろんこちらの方にもコードを載せてお世話にもなりました。
ちょっと高いですが、
Winsock2 プログラミング ルイス・ナッパー著
ISBN4-7973-3044-9
です。
色々分ることがありましたので良かったらご覧下さい。
投稿記事 Posted: 2011年10月03日(月) 23:57
  記事の件名:  ご回答ありがとうございます  引用付きで返信する
イグトランス様
引用:
そんな設定をしなくても動くSkypeは「ホールパンチング」って結構高度な技を使っています。
http://www.itmedia.co.jp/enterprise/art ... 070_3.html
私もやったことないので実現するプログラム例は示せないですし、(すべての場合を網羅するには)中央サーバが必要な方法ので水波形さんの要件にもそぐわないと思います。
なるほど・・・
解説などを拝見しましたが、まったくわかりません。
(超勉強不足)

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


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

Tako様、イグトランス様
本当にありがとうございました。
投稿記事 Posted: 2011年8月26日(金) 00:58
  記事の件名:   引用付きで返信する
>>えっと、PCは本当に1台しかないんです。

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

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

ネットワークの本を何冊か読破してスキルアップしてくださいとしか言い様がありません。
まずは、ルータなどを超えないシンプルな状態から初めるべきだと思います。
投稿記事 Posted: 2011年8月07日(日) 09:36
  記事の件名:   引用付きで返信する
多くのアプリケーション同様に手動で設定するのが最も簡単と思います(というより、私なら諦めてそうしちゃいます)。つまり、ルータ(この場合はおそらく無線親)で「外のネットワークから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日(日) 00:39
  記事の件名:  ご返信ありがとうございます  引用付きで返信する
Tako様、ご返信ありがとうございます。
引用:
PCは複数台書いて
えっと、PCは本当に1台しかないんです。
引用:
IP体系やルータの設定も必要です。
Skypeは、これを自動で設定しますよね。
どのようにしているのでしょうか。
おそらく、それが知りたくて探しているのだと思います。
引用:
また絵中のネットワークって何を指しているのですか?
分かりにくくてすいません。
普通にケーブルで、ネットワーク回線につないである部分のことです。
引用:
Pingは通りますか?
どこへのか分かりませんが、とりあえず通っていると思います。
ネットワークには接続できています。
引用:
ルータのポートは開けていますか?
昔の環境では出来ていたので、あいていると思います。
引用:
PCのファイヤウォールは大丈夫ですか?
XPと7で、仕様が違うのでしたら分かりませんが、セキュリティー対策ソフトは同じものを使っています。


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


図のほうがリンク切れになっているので、借りているサーバーにアップロードさせていただきます。
http://www.holygate.jpn.org/Data/zu.jpg
投稿記事 Posted: 2011年8月06日(土) 18:45
  記事の件名:   引用付きで返信する
>>昔の環境は図1のような形だったのですが、現在、事情により図2のような環境になっています。

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


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

>>関数を呼んで、そこからメッセージが来るまでずっとループさせておけばいいのでしょうか。
受信するとWindowsメッセージが飛んで来るので、UINTで指定したメッセージ(例えばWM_SOCKET)をGetMessageなどで取れば良いのでは。
投稿記事 Posted: 2011年8月06日(土) 14:47
  記事の件名:  IPネットワーク通信プログラムを作成したい  引用付きで返信する
お世話になっています。

今回、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にメッセージ(「接続してきた」や、「データが来た」など)を通知するものを指定するのだと思っています。

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


まったく分かっていなくて申し訳ないですが、ご存知の方、お分かりの方がいらっしゃいましたらご教示ください。
お願いします。
投稿記事 Posted: 2011年8月03日(水) 02:55

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


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