■MHPTunnelとは

MHP2G専用のアドホック通信トンネルです
Xlink KaiとかPSPTunnelとかと同じように、ネットワークを経由してMHP2Gができます


■特徴

TCP通信の一方通行接続を使うので、クライアント側のポートをあけなくていいのが最大の特徴です。
Xlink Kaiのようにユーザー登録不要です。
トンネルに特化しているので、シンプルでわかりやすい(つもりの)構造です。
PSPTunnelは開発が止まっているみたいですし、XlinkKaiはユーザー登録必要だし、SoftEatherを使ったブリッジ接続は有償なので
どれも希望に沿わなかったので自作することしました。


■必要なもの

・プロミスキャストモードに対応した無線LANアダプタ
 (XlinkKaiに対応してるものならOKです。開発には PCIのGW-US54GXSを使用しました。だいたい2000円くらいで売ってます)
・そこそこのスピードの通信回線
 クライアント側は理論上はグローバルIPアドレスがなくてもいけるはずですが、
 プロキシ経由が必須の場合はつながらないかもです。
WinPcap
 4.0で開発しましたが、そんな凝った使い方はしていないので3.0でも大丈夫だと思います。
 Vistaは環境がないのでためしていません。


■使い方 準備編(サーバー側/クライアント側 共通)

まず、無線LANアダプタを用意してください。
インターネットに接続するためのLANアダプタとは別に必要です。
XLink Kaiに対応しているアダプタが無難です。参考ページ
次に、WinPcapをダウンロードしてインストールしてください。
インストール直後はうまく機器を認識しないことがあるようです。インストール後は一度再起動してください。

次にニックネーム及び無線アダプタを決めます。
MHPTunnel.exeを起動してください。

メニューから、設定→ユーザー設定 を選択してください。

ニックネームの部分に、チャット時に表示されるニックネームを入力してください。
次に、PSPとの接続に使用する無線LANアダプタを選択してください。
OKを押して、設定を確定してください。


■使い方 サーバー編

サーバーになる方は、ルーターを使っている場合にはポートを空けてポートフォワーディング(静的IPマスカレード)する必要があります。
ポート番号は任意ですが、デフォルトは30000になってます。
設定変更は可能なので、任意に決めてポートをあけてください。
ルーターによって設定方法はまちまちなので、機種に合わせた設定方法を説明書などで調べてください。
メニューから、接続→サーバー接続を選択して、サーバー接続画面を開き、「サーバーを起動する」を選択して、
ポート番号を入力してOKを押してください。

ファイヤーウォールをONにしていると、起動時にセキュリティ警告が出ることがあります。

そのときは「ブロックを解除する」など、使用を許可する設定にしてください。
起動に成功すると、「[ニックネーム]がログインしました。」と表示されます。


■使い方 クライアント編

メニューから、接続→サーバー接続を選択して、サーバー接続画面を開き、「サーバーに接続」を選択して、
サーバーのIPアドレスと、ポート番号を入力してOKを押してください。
サーバー名の部分はダイナミックDNSなどで名前解決可能なホスト名でもかまいません。

環境によってはセキュリティソフトが反応します。
その場合は通信を許可する、に設定してください。

この状態で集会所に入ると、「[ニックネーム] が 集会所xx に入りました」と表示されます。
ログイン中の他のメンバーにも同じ集会所に入ってもらい、ゲーム画面に表示されれば通信成功です。

その他の機能として、テキストを入力して送信を押すと、ログイン中の全員に入力が表示されます。


■小技編

<call>を含む文字列を送信すると、ウインドウがアクティブでない状態の他のメンバーにメッセージボックスで通知できます。
/users と入力すると、ログイン中のユーザーの一覧を確認できます。
設定画面で「SSIDの自動追跡をONにする」の設定を有効にすると、集会所の移動を自動で追跡します。
cui.zip に入っている tunnel-server.exe は CUIベースのサーバープログラムになります。
このEXEファイル単体だとwinpcapなしでサーバーが起動できます。


■FAQ

Q.ポートフォワーディング(静的IPマスカレード)ってどうやってやるんですか?
A.ルーターの機種によって設定方法が異なります。
ルーターの説明書を読んでください。

Q.MHPTunnel.exeを起動したけどすぐ落ちちゃう!なんで!?
A.WinPcapをインストールしてない、なんてことはないですか?
確認してください。

Q.tunnel-client.exeで接続先サーバーアドレスを入力してるのに何度も聞かれるのはなぜ
A.指定した接続先にうまく接続できていないようです。
サーバーのIPアドレスやホスト名を確認してください。
インターネット経由で接続するクライアントの場合は、サーバーのローカルアドレスではなくグローバルアドレスを入力してください。

Q.サーバーとはつながってチャットもできるんですが集会所に行ってもだれもいません!
A.とりあえず、他の人も集会所にいるのにつながってないということですよね?
つながらない場合、まずPSPと無線LANアダプタがつながってないケースが多いです。
上記の「使い方 準備編」を読んで、PSPとアダプタをアドホックでつないでください。
集会所1にいるときに、ワイヤレスネットワーク接続の状態を確認して、
シグナルの強さが「非常に強い」になっていることを確認してください。


次に、クライアントソフトを起動したときに、「[ユーザー名]のPSP(xx) が集会所nn に入りました」 と表示されることを確認してください。
これが表示されない場合、WinPcapでパケットが正常にキャプチャーできていない可能性があります。
ノートPC等に内蔵されているタイプはどれもダメっぽいです。3機種ほど試しましたが、東芝製、古いIBM製、NEC製、どれもダメでした。
XLink Kaiに対応していない無線LANアダプタならば、あきらめて対応しているものを買ってきたほうが良いです。そんな高くないですし。
対応しているのにキャプチャーできないときは、一度PCを再起動してみましょう。
次に、デバイスの一覧で間違った機器を選択してないですか? なぜか分かりませんが、
PCIのUSBアダプタは機器名が正しく表示されないことが多いようです。
tunnel-client.iniを開いて Device= の行を削除して、もう一度tunnel-client.exeを起動してください。
高い確率で、名前がないやつがそれです。
分からなければUSBを抜いた状態で一覧を表示して、次にさした状態で一覧を表示してみてください。
増えているデバイスが該当するデバイスです

Q.ソース下さい!
A.src.zipにGUIクライアントのソースが入ってます。好きなだけ改造してください。
コアプログラムのソースは現段階ではあまりに汚すぎて公開できません・・・。
Ver0.5のソースコードは公開しています。参考にどうぞ。

■おまけ

GUIプログラムは Borland(R) C++Builder 2005 で開発しています。
コアDLLプログラムは Borland(R) C++Compiler 5.5 で開発してます。
どちらもランタイムライブラリを使ってないので、ランタイムライブラリのインストールは不要です。
動作報告とかお待ちしています。
フリーソフトです。著作権は放棄しませんが、再配布とかはべつにかまいません。
お約束ですが、動作の保障はできません。使用は自己責任でオネガイシマス。


■参考にさせていただいたもの。感謝感謝。

WinPcapのDevelopersPackに添付されているサンプル(basic_dump.c)
http://dog.tele.jp/winpcap/html/group__wpcap__tut8.html
http://glvertex1fv.hp.infoseek.co.jp/old.html
http://www.ops.dti.ne.jp/~allergy/socket/socket.html
http://www.kt.rim.or.jp/~ksk/wskfaq-ja/index.html


■変更履歴
2008.06.17 ver 0.7.4 - 細かい修正
・vを押すと意図せずペーストになることがある不具合の修正。
・TunnelSVR.iniを同梱しました(説明不足でごめんなさい)
・TMemoからTRichTextに変更して色つき文字が出るように。
・チャット表示処理をメッセージを使用して高速化。たまに文字化けするみたいですが気にしない。
・URLを貼り付けたときにリンクになるようにした。
・ふきだし表示のタイトルをチャット送信者の名前にした。

2008.06.08 ver 0.7.3 - 主にバグ修正
・内臓サーバーを使用すると落ちるバグ修正(別プロセスでTunnelSVR.exeを起動するように変更)
・フォント変更
・改行含む文字列のペーストを可能にした
・tunnel-server.exeをTunnelSVR.exeに名称変更。起動引数でもポートを指定できるようにした。
・CUITunnel.exeがアプリケーションエラーで動かない件の修正
・ログイン中にニックネーム変更するとおかしくなるバグ修正

2008.06.03 ver 0.7.2 - 主にバグ修正
・一覧表の表示中にチャット入力すると落ちるバグ修正
・Vistaだと集会所に入りましたと表示されないバグ修正

2008.06.01 ver 0.7.1 - 主にバグ修正
・内臓サーバーバグ修正(起動後3秒後にアプリケーションエラーする)
・ユーザー/PSP一覧表示追加
・Windowsサービス対応
・IME入力変換中にカーソル上下してもコマンドヒストリーが表示されないよう改善

2008.05.25 ver 0.7 - GUI化対応
・GUI対応(MHPTunnel.exe)
・コア部分(tunnel.dll)とUI部分(MHPTunnel.exe)を分離
・そのほか変更点が多すぎて書ききれません。

2008.05.04 ver 0.6 - SSIDの自動追跡機能を追加。/help /perty /tell コマンド追加

2008.04.29 ver 0.5 - あまりにソースが汚かったので掃除を。 /logout コマンド、/users コマンド追加。

2008.04.28 ver 0.4 - まれに落ちることがある件の応急対策Final。再接続するようにしてみた。
2008.04.27 ver 0.3 - まれに落ちることがある件の応急対策その2。
2008.04.27 ver 0.2 - まれに落ちることがある件の応急対策。
2008.04.27 ver 0.1 - Pensil とりあえず最初の公開