wifiによるデータ通信

[戻る]
とろり 2011/05/25(水) 20:36:01
VC++2005で作成したアプリケーションで

2台のPCを用いたWifi通信によるデータの送受信を行いたいです。

まだ、検討を始めたばかりで全く考えがまとまっていません。

漠然とで構いませんで、

どういった事を検討すべきか?

こういった知識が必要とか、

なんでも構いませんので教えて頂けないでしょうか?

宜しくお願いします。

ITO 2011/05/25(水) 21:06:37
うーーん、
 Wifi通信ってPC用として何かI/F機器出回ってましたっけ?
 それとも、携帯機器を経由して通信するとか?
まず、どのようにしてPC同士を通信させるかを考えないとだめですね。

tetrapod 2011/05/26(木) 09:00:50
WiFi っていうか、単に無線 LAN なだけぢゃないの?
インフラストラクチャモードだと有線と何一つ違わないよ

好きなプロトコルで好きに通信していい。
ftp や cifs(smb) つかうのがめんどくさくないと思うけど。

アドホックモードの接続を確立するのにユーザの介入をいらないようにしたい?
P2P で接続を受ける側のポートの FireWall をユーザーの介入なしに空けたい?
そんなセキュリティ無視なツールは有害だね。

仲澤@失業者 2011/05/26(木) 10:20:39
1.Wi-Fiとは「Wi-Fi Alliance」が策定したもので、無線LANの相互接続を保証
 するための、主にハードウエアの(試験の)規格です。
 他、接続時のセキュリティの規格なども規定しています。

2.無線LANの規格はIEEE 802.11で規定されています。ハードウエアの規格です。

なので、
>2台のPCを用いたWifi通信によるデータの送受信を行いたいです。
を翻訳すると、

「2台のPCを無線LANを用いてデータの送受信を行う」

ということになります。んで、
ドライバ等を除く通常のWindowsアプリケーションにおいては、LANの通信は、
TCP/IPで行うので、有線LAN通信と無線LAN通信の区別はありません。
また、TCP/IPによる通信のプログラムは一般に socket を使用することに
なります。従って

「2台のPCをTCP/IPを用いてデータの送受信を行う」

になるかと思います。さて、Wi-Fiを想定しているという原点に立ち戻れば
アドホック、つまりPC間の直接通信は、除外されると考えても良いと思われるので、
必ずサーバー経由の通信と解釈できます。最終的には

「2台のPCをTCP/IPを用いてサーバーを介したデータの送受信を行うための
 サーバー用アプリケーションとクライアントアプリケーションを作成する。
 ただし無線LANでの接続を前提とする」

となるかもしれません。

bun 2011/05/26(木) 13:14:54
みなさんがおっしゃっているとおり、「Wifi通信によるデータの送受信」では
漠然としすぎです。

もう少し、詳しく話してみましょう。
違った答が得られるかもです。

ぺろ 2011/05/28(土) 00:36:16
>こういった知識が必要とか、
>どういった事を検討すべきか?
>なんでも構いませんので教えて頂けないでしょうか?
何をしたいのかにもよります。接続が確立した状態なら
普通のTCP/IP通信でしょう。

無線LANを制御したいならXP以降であればAPI群があります。(使った事ありませんが)
「Wireless Zero Configuration」
この辺から調べていくと良いかもしれません。

もっと突っ込むなら(WindowsCE/mobile)
無線LANの電波強度の取得
http://www.mobileware.jp/index.php/%E7%84%A1%E7%B7%9A%EF%BC%AC%EF%BC%A1%EF%BC%AE%E3%81%AE%E9%9B%BB%E6%B3%A2%E5%BC%B7%E5%BA%A6%E3%81%AE%E5%8F%96%E5%BE%97
こういう話だと、面倒というか資料があまりありません。

とろり 2011/05/30(月) 12:06:04
沢山のコメントありがとうございます。
お返事が遅くなりすみません。

>「2台のPCをTCP/IPを用いてサーバーを介したデータの送受信を行うための
> サーバー用アプリケーションとクライアントアプリケーションを作成する。
> ただし無線LANでの接続を前提とする」

仰る通りです。但し、1点だけ
「インターネットの接続は行わず、2台のPC間でのみ通信を行う」

といった内容を行いたいんです。

---------------------------

>無線LANを制御したいならXP以降であればAPI群があります。(使った事ありませんが)
>「Wireless Zero Configuration」
>この辺から調べていくと良いかもしれません。

>もっと突っ込むなら(WindowsCE/mobile)
>無線LANの電波強度の取得

http://www.mobileware.jp/index.php/%E7%84%A1%E7%B7%9A%EF%BC%AC%EF%BC%A1%EF%BC%AE
>%E3%81%AE%E9%9B%BB%E6%B3%A2%E5%BC%B7%E5%BA%A6%E3%81%AE%E5%8F%96%E5%BE%97
>こういう話だと、面倒というか資料があまりありません。

非常に参考になります。
上記のAPIやサンプルなどで、サーバー側からクライアントを検索する機能も
作成出来るんでしょうか?
探してみます。

---------------------------

TCP/IPのデータ通信について

今、分かりやすいサンプル等を探していますが、
何かお勧めのサイト等ございましたら、教えて頂けませんか?


以上、宜しくお願いします。

tetrapod 2011/05/30(月) 12:21:05
用語が整理されていないというか、わかってないから不適切な用語になってるというか

> 「インターネットの接続は行わず、2台のPC間でのみ通信を行う」
この「インターネット」あるいは「インターネットの接続」という文言を、
どういう意味で用いているの? Wi-Fi とインターネットは話の次元が違う。

Wi-Fi っつことは [無線] なわけだが、
・無線 PC 同士を直接接続する (DS/PSP の直結対戦) のであれば、
 それは「アドホック接続」を行うことに該当する。
・無線 PC 同士をある1つのアクセスポイントに接続するのであれば
 それは「インフラストラクチャ接続」に該当する
 (※アクセスポイントが外部ネットワークにつながっていなくて良い)

インフラストラクチャ接続だろうがアドホック接続だろうが LAN が構築された後は
どっちかがサーバ、どっちかがクライアントになって接続しあうだけの話。
いわゆるインターネットサーバクライアントの解説と何一つ違わない。
Peer to Peer の解説書とかも役に立つと思うぞ。

アドホック接続を行う際にはセキュリティ的考察が必須なので
(適当に近くにあるPC同士が勝手に通信してよいわけが無い)
まずはその辺の理解から。

bun 2011/05/30(月) 17:36:26
想定しているのは、ローカルLAN内でIPメッセンジャーみたいなもので
お話しするとか、そういう感じですか?

[IPメッセンジャー]
http://www.forest.impress.co.jp/lib/inet/msgchat/messenger/ipmsg.html

とろり 2011/05/30(月) 20:33:16
>いわゆるインターネットサーバクライアントの解説と何一つ違わない。

非常に勉強になります。ネットワーク基本技術の習得が必要ですね、これは。。

因みに今回のは「アドホック接続」です。


>想定しているのは、ローカルLAN内でIPメッセンジャーみたいなもので
>お話しするとか、そういう感じですか?

はい、ソフト的にはこんな感じです。
ただ、ネットワークとしては
クライアントとサーバーの関係を持たせなきゃいけないところが違います。

因みにインフラストラクチャ接続やアドホック接続する基本部分を、
VC++で実装するのは簡単でしょうか??

ぺろ 2011/05/30(月) 22:29:42
例えば
http://d.hatena.ne.jp/j-ishii/20091206/1260120531
使った事無いから質問されても答えられないけど。

使った検索ワードはこれ「Wireless Zero Configuration 電波強度」
私はCEの探索しているのでこのAPI達には興味ありません。
サンプル言わないでもう少し調べてみてもいいんじゃない?
キーワード次第で他にも探せるかもしれません。

tetrapod 2011/05/31(火) 07:06:37
要するに仕事として2つのストーリーがあって
1. Wi-Fi で LAN を構築する
2.構築済み LAN 上にて目的とする機能を実装する

1と2は話がまったく別。
1ができても2には無関係だし、2を実装するには無線でなくてもよい。

1.
無線接続って誰に傍受されるかわからない(盗聴と傍受は違う)こと、
無線機能が有効であっても (Adhoc に) 勝手に接続されてはたまらないこと、
PSK をどう安全に保存すべきか、
などなど、プログラムの実装に移る前に理解しておかなければならないことが
山盛りあるので、そこからはじめないとならないぞ。前提知識なしで実装すると
「セキュリティ無視有害ソフト」に認定されかねない。

Wi-Fi 関連 API 資料なら
http://msdn.microsoft.com/en-us/library/ms706556(v=VS.85).aspx

2.
httpd/dhcpd/named/wins など集中サーバがいない adhoc LAN 上で
どのマシンがサーバになるのか?
IP アドレス/マシン名を誰がどのように提供するのか?
接続すること・されることを認めたり認めなかったりセキュリティをどう担保するか?
FireWall をどう維持管理するのか?
などなど adhoc LAN 上で何かするってのは意外に面倒/困難/危険を伴う。

先は長そうだね・・・まあがんばってくれ。

ITO 2011/05/31(火) 09:58:03
うーーん、
 ただ単にWi-Fiの無線LANを使ったLAN接続だったら、それぞれの機器の説明の読んで
セットアップして通常のソケット通信をすればいいと思います。

>因みに今回のは「アドホック接続」です。
 こちらを使うのだとかなり難しいようですね。
 先ほどべろさん紹介のサイトのぞいて見たら「DeviceIoControl()」使ってましたね。
 Wi-Fiの電波強度等、無線LAN通信のステータスを調べるためには、直接ドライバー
 からステータスをもらうしかないみたいですね。
  ということは、どんなWi-Fi機器を使うのか?
  それによってソフトも対応しなければならない。
 ということですね。
 あと、単に会社のWi-Fiの無線LAN機器の開発・試験のためならいいのですが、
運用ソフトとして考えているのならば、tetrapodさんの意見にある、セキュリティーの
 問題がありますね。
 
  OSでもチェックしているみたいだし、ウイルス対策ソフトでも検索の対象に入れて
 いるのも多いです。(ウイルスバスターは選択でできるようになっていますね。)
  tetrapodさんのいうFireWall等をOSやウイルス対策ソフトに任せるとしても、
 にあったソフトにしないと逆にFireWall等をひっかかって通信ができなく
 なる可能性もありますね。

 

ITO 2011/05/31(火) 10:01:31
修正です。
ココカラ ---------
  tetrapodさんのいうFireWall等をOSやウイルス対策ソフトに任せるとしても、
 それらの条件にあったソフトにしないと逆にFireWall等にひっかかって通信が
 できなくなる可能性もありますね。
-------------- ココマデ
です。

とろり 2011/05/31(火) 13:02:06
>使った検索ワードはこれ「Wireless Zero Configuration 電波強度」
>サンプル言わないでもう少し調べてみてもいいんじゃない?

このWindowsサービスをうまく使う事も可能かもしれませんね。


>1. Wi-Fi で LAN を構築する

NativeWifiを用いてパスワードなどでセキュリティを高める形で簡単にいかないでしょう
か?




>2.構築済み LAN 上にて目的とする機能を実装する

ここは非常に難しいですね。。。
単にインターネット接続していないPC同士の通信って訳にはいかないでしょうか。。。


>tetrapodさんの意見にある、セキュリティーの問題がありますね。
>tetrapodさんのいうFireWall等をOSやウイルス対策ソフトに任せるとしても、
>それらの条件にあったソフトにしないと逆にFireWall等にひっかかって通信が
>できなくなる可能性もありますね。

この辺はネットワーク関連のソフト開発では必須になるかと思います。
皆さんはどのような対応で回避しているのでしょうか。。。?

仲澤@失業者 2011/05/31(火) 13:55:44
まずは、固定IPアドレス、固定ポート番号で、2台のPCが通信できる
ところまでやってみたらどうでしょう。
これだって結構なコード量になります。

bun 2011/06/01(水) 09:47:57
読み返してみて、思うのですが、アドホック接続は本当に必須ですか?
インターネットにつながらないということだけが必須じゃないですか?
であるなら、その辺に売ってる無線ルータを介して接続を行い、
WAN側をつながなきゃいいだけ。

そうすりゃ、普通にTCP/IP通信できます。
ソケット通信/FTPサーバ/HTTPサーバ/ファイル共有/...
通信手段はいくらでも、サンプルコードもいくらでも。

再検討してみることをお勧めします。

ITO 2011/06/01(水) 13:42:26
BUNさんの意見に僕も賛成ですね。
市販のWi-Fi対応無線LANを使えば、無線LAN内臓のシステムがおそらく
アドホック接続・セキュリティー・ルータ機能までやってくれると思いますね。
そのまま無線LAN経由でPC同士を繋いで設定すればOKみたいですね。

ダイナブック無線LAN内臓の例
http://dynabook.com/assistpc/faq/pcdata/003341.htm

「ピアツーピア接続 アドホック接続」でぐぐればいろいろな例が出ています。

とろり 2011/06/01(水) 14:02:26
コメントありがとうございます。

>まずは、固定IPアドレス、固定ポート番号で、2台のPCが通信できる
>ところまでやってみたらどうでしょう。
>これだって結構なコード量になります。

十分調査したあとに単機能の動作を作っていこうと思います。

>インターネットにつながらないということだけが必須じゃないですか?
>であるなら、その辺に売ってる無線ルータを介して接続を行い、
>WAN側をつながなきゃいいだけ。

無線ルータは使えない環境なのです。
そうなると、やはりアドホック接続になるのでしょうか?

ITO 2011/06/01(水) 14:30:13
http://www.aterm.jp/function/guide10/wireless_cmx/list/adhoc/m03_ts2.html
市販の子機同士でもソフトなしでアドホック接続できるけど?
IPアドレスも固定にできるからそのままソケット通信できるのでは?

とろり 2011/06/03(金) 12:50:46
>市販の子機同士でもソフトなしでアドホック接続できるけど?
>IPアドレスも固定にできるからそのままソケット通信できるのでは?

そうなんですね。
こういった端末に付属しているソフトウェアでの対応だと、
通信規定などを考慮した接続を行ってくれそうですね。

検討してみます。

浩二 2011/06/13(月) 02:12:22
http://d.hatena.ne.jp/yuyarin/20080308/1204980036
のような事を、プログラムでやるなら
http://www.aterm.jp/function/guide/wireless/zero-w7xx/list/adhoc/m03_t.html
で できる・できない があるのように、
子機にも依存するため、ものすごく大変かもしれません。

上記のようなことを手動で接続確立後に通信する部分をプログラムするなら
みなさんがおっしゃるようにただのソケット通信で済みます。

古いスレッドには追加発言できません。