約 3,374,461 件
https://w.atwiki.jp/mh-kit/pages/13.html
MHPTunnelとは pensil氏が作成した、MHPをネットワーク経由でプレイ可能にするソフトウェアです Xlink kaiに対応したUSB接続型の無線LANアダプタがあれば、簡単に参加することが出来ます 全員のポート開放が必要なxlink kaiと違い、サーバーとなる人だけがポートを開放すれば良いのでイーグルネットユーザーでも参加可能です 無線LANアダプタについて 今のところ、以下の2機種での動作を確認していますGAMETECH wi-fi USBアダプタ3 Logitec LAN-W11/U2PSP また、Planex製のXlink対応アダプタとも相性が良いようです。 手順通りにやってるのに上手くいかないときは よくある質問 導入手順 WinPcapのDL MHPTunnelはWinPcapを用いて制作されているので、WinPcapをインストールする必要があります WinPcap DLリンク インストールインストーラを起動したら、Next Next I Agreeと、インストール手順を進めます Automatically start the WinPcap driver at boot timeにチェックが入っていることを確認し、Installを押します インストールが終わったら、ウィンドウを閉じて終了します 無線LANアダプタのドライバ導入 製品に添付してきたディスクのXlink用ドライバを導入してください 詳しくは、メーカーHP もしくは 添付の説明書を参照してください ドライバの導入を終えたら、一度PCを再起動してください 無線LANアダプタの設定 アダプタの設定Xlinkに対応した無線LANアダプタにはPSP Xlink modeの設定が存在しています デバイスマネージャから該当のアダプタのXlink modeをEnableにしてください デバイスマネージャを開く 該当のアダプタをダブルクリック 詳細設定の下の方にあるPSP Xlink ModeをdisableからEnableにする PSPの設定 ネットワーク設定 アドホックモード ch設定 6に固定してください 省電力設定→ワイヤレスLAN省電力モード切 MHPTunnel MHPTunnel導入MHPTunnel ver0.7.4をDLしてください 展開したら、MHPTunnel.exeを起動します。 設定→ユーザー設定から、無線デバイスを先ほどXlink modeを設定した無線LANアダプタにします PSPからオンライン集会所に入り、Windows側からPSPに接続します PSPを出来るだけ無線LANアダプタに近づけると、認識しやすくなります 認識したらテストボタンを押し、パケット送受信成功と出れば導入成功です。
https://w.atwiki.jp/gtavi_gta6/pages/2123.html
Braddock Tunnel 概要 解説 店舗、外見など 概要 日本語:ブラドックトンネル 業種:隧道 所在地:ブラドックパス 解説 ブラドックパスのグレートオーシャン高速道路のパレトベイからロスサントス方面へ行く側にあるトンネルで長さは約320m。 元ネタはカリフォルニアにあるガヴィオータトンネル。 店舗、外見など
https://w.atwiki.jp/mhpt/pages/16.html
よくある質問 ■基本編 MHP2G用って書いてあるけど、MHP3 でも使えるの? 大丈夫です。問題ありません。 SSID固定型のゲームであれば、モンハンに限らず利用可能です。 SSID変動型のゲームはちょっとコツが必要です。 Vista や Windows7 でも動く? その OS での XLink Kai 対応 を謳う無線アダプタであれば大丈夫だと思われます。 編集者 は Windows7 64bit版 に Planex GW-USNano で動作を確認しています。 参考:Windows7 で GW-US54GXS を使う場合、WinPcap を XP互換モードでインストールする必要があるという報告がありました。 XLink Kai の代わりになるの? XLink Kai とはやや性格の異なるソフトです。 身内・知人等の少人数でプレイするのに最適で、野良プレイにはやや不向きとなっています。 野良プレイで使いたい場合、公開されているサーバ に接続したり、掲示板等でサーバIP を告知し、募集する形になります。 XLink Kai との違いや、メリットは? プレイヤーの誰か一人が サーバー となり、他の人はその サーバ に接続するクライアントとなります。 固定のサーバを経由するわけではないので、サーバダウン等の影響を受けることがありません。 またクライアント側はポート開放の必要がなく、プライベートIPしか貰えないマンション等のネット環境でも利用できます。 一方、誰か一人は必ず ポート開放し、サーバーとなる必要があります。 野良プレイしたい! 公開されているサーバー に接続してください。 2ちゃんねるの募集スレや Twitter などでも活発に情報が交わされていますので、そちらで公開されているサーバを探すのもよいでしょう。 または、自分がサーバとなってグローバルIPを告知して募集してください。 PSP.NetParty ってのがあるらしいけど? PSP.NetParty は MHPTunnel のコンセプトを元に もんて◆GP74ixNFQY 氏 が開発中の 別のソフト です。 MHPTunnel とは互換性がありませんし、開発者サイト 及び 該当wiki もありますので、当サイトでは扱いません。 詳しくは下記のサイトをご覧ください。 PSP.NetParty 公式サイト http //team-monketsu.net/ PSP.NetParty wiki http //wiki.team-monketsu.net/ ■クライアント・設定トラブル編 ノートPCに内蔵の無線LANで出来る? まず無理です。大人しく無線アダプタを買ってください。 1000~1200円程度で買えますよ。 対応無線アダプタはどれ? XLink Kai に対応したアダプタをご用意ください。 一般には Planex製 が情報も多く良いようです。 プラネックス(Planex) XLinkKai 対応製品 バッファロー(BUFFALO) XlinkKai 対応製品 ロジテック(Logitech) 無線LAN子機 アイ・オー・データ(IO-DATA) 無線LAN子機 無線アダプタの設定は? ドライバのインストールや基本的な設定は XLink Kai に準拠します。 つまり、XLink Kai が出来ていた人は特に設定をいじることなく MHPTunnel をご利用いただけます。 設定のデバイスに「チャットのみ」しか表示されない 無線アダプタの設定がうまくいっていません。 ドライバのインストールや、デバイスの PSP XLink Mode Enable の設定ができているか確認してください。 ↑のデバイスのプロパティに PSP XLink Mode が無い 無線アダプタのドライバが正しくインストールできていません。 AP・子機モード用のドライバと、XLink用のドライバが別になっている製品もありますので、 マニュアルやメーカーサイトをよく読んでインストールしてください。 64bit版OS で Planex の XLink用ドライバ が手動更新・インストールできない 一度ドライバを削除し、Planex のドライバがインストールされたフォルダにあるドライバの中で、 自分の OS 以外のものを全て削除し、アダプタを刺す。 そして手動で自分の OS 用のドライバを指定してインストールする。 実際にやった手順 (Win7x64 + GW-USNano) Planex公式から 最新版ドライバ のDL ドライバ・ユーティリティのインストール ¥WIN764_XLINK フォルダを適当なフォルダにコピーして退避し、ドライバ・ユーティリティはアンインストール。 GW-USNano を刺し、デバイスマネージャから手動でドライバ更新→ 退避してあった ¥WIN764_XLINK フォルダを指定 PC-PSP間の接続は Win7標準のネットワーク接続。 タスクトレイからポンと接続できるから問題ない。 設定でデバイスのテストというボタンを押すと「パケットの送受信に失敗しました」等と出る このテストボタンに惑わされないで下さい。 というかスルー推奨。 集会所に入り、PC-PSPが接続されて、全てが正しく通信できる環境になって初めて「成功」します。 あれこれ設定して準備している段階でテストしてもエラーになるだけで、何の意味もありません。 チャットはできるのに集会所で他の人が見えない、会えない。 チャットだけなら PSP も 無線アダプタ もいらないんです。つまりチャットだけなら出来て当たり前。 まず MHPTunnel の右下ペインを確認してください。 自分の名前とエリアにSSIDが表示されていなければ、PC-PSP間 が接続されていません。 無線アダプタのユーティリティ等で ゲームの SSID に接続してください。 右下ペインでちゃんと自分も相手も同じSSIDに接続されているように見えるのに、会えない いくつか報告がありますが、今のところ原因不明です。 Planex の GXS を使っている人は、デバイスマネージャだけでなく、 GXSユーティリティ内にある XLinkモードが ON になっているかをチェックしてください。 また、WinPcap周りの問題ではないか?と疑われています。 再インストールや互換インストールなどを試してみてはどうでしょうか? MHPTunnel を管理者権限で起動すると成功した、という報告もありました。 一度Xlinkに接続することで解消されることもあるようです。 「pktSet802_11Configuration2失敗」と表示される 設定 で SSID の自動検索を 行わないように設定してください。 この際、集会所の出入りの度に PC-PSP の接続を手動で行う必要が出てくることがあります。 WAN側(インターネット接続側) に無線LANを使ってるんだが… 問題なく使えているのなら大丈夫でしょう。 トラブっている人は一度有線で繋いでみて試してください。 その際、デバイスマネージャ等で、ネット接続に使っていた無線LANデバイスを 無効にしてやると良い結果がでるかもしれません。 どうも Vista や Win7 と無線アダプタの相性が悪いっぽい気がするんだが OSライセンスが問題なければ、仮想PC で XP を動かし、そこで MHPTunnel を使うという手段があります。 編集者は Windows7 Pro の XP-mode に GW-US54Mini2 の組み合わせで実際に運用を確認しています。 (参考画像:実際に起動したデスクトップSS) 対応無線アダプタ買ったほうが早い気もしますけどね…。 ■クライアント・実践編 Ping ってどれぐらいなら大丈夫なの? ほとんど 0 の人がいるけど? Kai における Ping とはやや基準が違うようなので、「Ping高すぎオワタ」と思いこむ必要はありません。 もちろん少ない方が良いのですが、平均して 200 程度でもプレイに支障は無いようです。 4桁、5桁にならなければ、多少のラグはあれど離脱・切断に至ることはさほどないでしょう。 Ping 0 はサーバ主です。自身がサーバなので当然 0 です。 MHP3 やるとエリアの表示が SSID でわかりづらい、イミフ。 MHP3 での利用 のページを参考に MHPTunnel.ini を編集・設定してください。 MHP3 の「すれ違い通信」ってできる? 本スレ Part3 で実証実験があり、可能と判明しました。 「すれ違わない通信」と呼称されています。 オトモボードからオトモ配信を選択すると、専用の SSID (PSP_AULJM05800_L_DISCOVER) が発信されますので、 それに接続します。 同じサーバ内で同様の操作を行った人とすれ違ったことになり、オトモ配信が行われます。 集会所01 以外だとうまくいかない 集会所ごとに SSID が変わるのですが、集会所02 に入っても 無線ユーティリティが 集会所01 の SSID に 接続してしまう現象があります。 SSID を再検索し、正しい SSID に接続し直すことで大抵解決します。 また、設定で無線デバイスをリセットしてみてください。 やたらとラグる、離脱が頻発する 同じ集会所の中に、回線状態の悪い人がいる可能性が高いです。 また、PC で CPU や ネットワーク に負荷のかかるソフトが動いていると MHPTunnel の通信は安定しません。 特にサーバとなる人は、回線やマシンスペックには余裕がある人が望ましいでしょう。 数人との Skype ぐらいは問題ないようです。 MHPTunnel の CPU 利用率がやたらと高い 無線アダプタ等、何か別の原因があると思われます。 正常な状態であれば、通常 Atom N270 でさえ 10% も使いません。 一台のアクセスポイントに二台以上PSPは接続できるの? 大丈夫です。 大丈夫ですが、当然PCの負荷は高くなります。 2人ぐらいまでが安定して動作する限界かもしれません。 これを利用して、アドホックパーティで通信している人達とTunnelを介して接続することも出来ます。
https://w.atwiki.jp/mhpt/pages/15.html
スリム化 新テンプレ案 【PSP】MHPTunnel Part6【ネットプレイ】 MHPTunnelとは、ぺんしる ◆hhOkjnPENs氏が作成した ネット経由でのPSPアドホック通信用ソフトです。 XLink Kaiの様に、インターネットを通じてマルチプレイが可能になります。 XLinkKai と比べると、大勢での野良プレイには不向きですが、 クライアント側はポート開放を必要とせず、 また Kaiサーバの状況に左右されずに遊ぶことできます。 サーバになる人はポート開放が必要です。 その他、詳しくは wiki にて。 MHPTunnel http //www.pensil.jp/MHPTunnel/ MHPTunnel wiki http //www39.atwiki.jp/mhpt/ ■ 2ch@IRC MHPtunnel待合せ http //irc.2ch.net/qi2/qi2.html?utf8=%23MHPtunnel%E5%BE%85%E5%90%88%E3%81%9B ■ 募集スレ MHPTunnel 募集スレ 4PT目 http //toki.2ch.net/test/read.cgi/handygame/1292906819/ ■ 外部したらば募集板 PSP モンスターハンター3rd MHPTunnel募集掲示板 http //jbbs.livedoor.jp/netgame/7622/ ■ MHPTunnelを基に.net framework 4を使用し改良したもの MHPTunnel改良版のスレ http //toki.2ch.net/test/read.cgi/handygame/1292744521/ ■ 前スレ 【PSP】MHPTunnel Part5【ネットプレイ】 http //toki.2ch.net/test/read.cgi/handygame/1293050839/ ■利用開始まで基本的な流れ 01. 1の wiki より、MHPTunnel本体、WinPcapを導入。 02.http //27bit.com/os-7-port.htmlをもとに、TCP,UDPともに30000番ポートを開放。受信の規則、送信の規則どっちも。 03.アダプタ接続する。Kaiのときと同じく、クライアントモード。 04.PSPで集会所に入り、アダプタに認識させる。 05.MHPTunnelをファイアウォールで許可させる。MHPTunnel.exe(PSPが2台のアイコン)を起動。 06.ユーザ設定の画面を開く。 07.ニックネーム入れる。(記号は避ける) 08.無線デバイスで利用する無線アダプタを選択。 09.自動接続はチェック入れる。テストは押さない! 10.SSID自動検索は行うにチェック。(エラーが出る人は行わないにする) 11.検索間隔はデフォ。 12.その他の設定、タスクトレイ・・・にのみチェック。 13.OKをクリック。 サーバー(ホスト)になるなら、 14.接続→サーバーに接続→サーバーを起動する。ポート番号30000 15.OKをクリック。 16.自分のチャットへのログイン(右上ペイン)、PSPがエリアに入っていること(右下ペイン)を確認。 17.ウェブブラウザで http //www.cman.jp/network/support/go_access.cgi にてグローバルIP を確認。 18.募集スレ等で 17. の グロバールIP、ポート番号30000でよびかけ。 ※192.168... で始まる IP は プライベートIP。公開しても意味無し。 ※169.254... で始まる IP は APIPA による IP。公開しても意味無し。 クライアント(参加者)なら、18. のような呼びかけを見て、 14. 接続→サーバーに接続→サーバ名に接続先のグローバルIP を入力→ポート番号も合わせる。 15.OKをクリック。 以前のテンプレ スレタイ変わってるけど前スレ http //jfk.2ch.net/test/read.cgi/handygame/1206081939/ MHPTunnelとは、ぺんしる ◆hhOkjnPENs氏が作成したMHP2G専用通信ソフトです。 XLink Kaiの様に、無線LANアダプタを使用し、アドホック通信をインターネットを 通じてオンラインプレイする事が出来る様になります。 一応MHP2G専用とはなっていますが、MHP2G以外のソフトでも使用する事は可能です。 XLink Kaiとの違いは、サーバーになる側はポート開放が必要なものの、接続する 側はポート開放が不要なので、マンションやケーブルテレビ等でグローバルIPが 貰えなくて、XLink Kaiが使用できない人も、公開サーバーへ接続すればオンライン プレイをする事が可能です。 現在の所公開サーバーはいくつかありますが、MHPTunnelにはロビー機能が無いので 知らない人との大人数プレイには不向きです。 身内のみでしか一緒にプレイするつもりが無かったり、公開サーバーに人が多い様で であれば、自分でサーバーを立てる事をオススメします。 MHPTunnel http //www.pensil.jp/MHPTunnel/ MHPTunnel wiki http //www39.atwiki.jp/mhpt/ PSUPTunnel http //angel.s234.xrea.com/purechaos/program/PSUPTunnel.html MHPTunnelの亜種。PSPoシリーズなどのSSID変動型タイトルに特化 MHPTunnelの元になったソフト PSPTunnel http //psptunnel.sourceforge.jp/ スレ立て時現在、開発と公開共に停止中みたいです。 おまけ http //www.gamelink.cx/ 広告収入目的の様だが、まともに動作しなくて過疎っているらしい 各種ソフトで使用できる無線LANアダプタは、XLink Kai対応製品であれば 基本的に使用できるはずです。 ポート開放が簡単に行えるソフト http //umemasu.hp.infoseek.co.jp/upnpcj/index.html ポート開放ができないけどサーバーを立てたい人用 http //www.eonet.ne.jp/~s600/hamachi/ ただし接続する側も含めて全員がHamachiを導入する必要あり 各種ソフトの違い早見表 XLink Kai=ポート開放ができる人向けで、大勢の人とプレイが可能 PSP Tunnel=ポート開放ができる人向けで、Kaiの鯖に依存しないでプレイが可能 MHP Tunnel=ポート開放が出来ない人向けで、Kaiの鯖に依存しないでプレイが可能
https://w.atwiki.jp/selflearn/pages/20.html
ここでは、pingコマンドのソースコードを調べ、まとめた内容を記録していきます。 開始日 2007年01月23日 最終更新日 2009年06月01日 はじめに 目標 pingソースを読むにあたって、それぞれ次のような目標で進めます。 kato「パケット送信~受信の流れを掴み、自分でもpingパケットの送受信ができるようになる。pingコマンドのオブションに詳しくなる」 ichi「コマンドオプションの取り扱いやパケット送受信の処理方法などの定石を知り身につける。各ファイルの意味・役割についてもしっかり理解する。C言語を思い出す:P」 使用ソースコード GNUソフトウェアinetutils-1.5を使用します。コンパイル・インストール方法はping(メモ)を参照してください。 TODO 進めていく中で、やること・やりたいことを書いてください。終わったら黒く塗りつぶすこと。必要に応じて細分化してもオッケーです。 ■ 指定可能なオプションの一覧作成 □ 各ファイルの用途をまとめる □ オプション未指定で起動したときの処理フローを調べる。関数コールの流れが分かると良い □ ping_echo.cの調査。他のソースはping_echo.cが終わってから □ パケット送信処理のルールを追う。ping_echo.cでのパケット生成~送信の流れをまとめる □ パケット受信処理のルールを追う。パケットの受信待ち~受信~情報取得~画面表示の流れをまとめる がんばりましょう。 外部インタフェース この章では外から見えるpingの振る舞いについて記述します。 そもそも、pingコマンドって何なの? ICMP ECHO_REQUESTパケットをネットワーク上のホストに送信するプログラムです。対象ホストが到達可能かどうかをテストします。 pingプログラムはICMPのECHO_REQUESTメッセージを送信し、ホストやゲートウェイから返信されるICMPのECHO_REPLYメッセージを受信します。ECHO_REQUESTメッセージはIPとICMPヘッダーを持っていて、送信した時刻(struct timeval)と指定したサイズぶんのパディングデータによって構成されています。(*1) 指定可能なオプション ※とりあえずping.8から抜粋。後でソースと比較し、きちんとまとめます。 オプション 処理(ロングオプション) -V --version バージョン情報を表示して終わる -L --license ライセンス情報を表示して終わる -h --help 使用方法を表示して終わる -c (count) --count ECHO_REQUESTの最大送信パケット数(またはECHO_REPLYを受信した数)で送信を止める -d --debug ソケットにSO_DEBUGオプションを付けて実行する -r --ignore-routing 通常の経路テーブルを無視(バイパス)し、接続されたネットワークのホストにダイレクトに送信する。もし対象ホストが接続されたネットワークに存在しない場合はエラーが返る。このオプションは(当該ホストへの)経路情報を持たないローカルホストに対して有効である。(e.g., after the interface was dropped by routed(8)). -s (size) --size ECHO_REQUESTパケットのサイズを指定する。デフォルトは56bytesで、これはICMPヘッダを含めるとちょうど64bytesになる。 -i (wait) --interval 各ECHO_REQUESTの送信間隔を秒で指定する。デフォルトは1秒。このオプションは-fと同時に設定することはできない。 -n --numeric IPアドレスを10進数表記により出力する。ホスト名をルックアップする処理は行わない。 -v --verbose 標準出力に対し情報を出来る限り出力する。ECHO_REPLY以外のICMPパケットも受信すれば出力する。 -t (type) --type ("echo"/"timestamp"/"address"/"router") ICMPのメッセージタイプを設定する。このオプションは次に示す3つのオプションのどれかを設定したときと同じ結果を生む - --echo ICMP echoメッセージを送信する(デフォルト動作) - --timestamp ICMP timestampメッセージを送信する - --address ICMP addressメッセージを送信する - --router ICMP router discoveryメッセージを送信する。現在は未対応 -f --flood 100回/秒かそれ以上のパケットを送信する、「pingの洪水(flood)」を発生させる。ECHO_REQUESTを送信するごとにピリオド「.」を1文字出力し、ECHO_REPLYが届くごとに削除する。したがって画面上に表示されたピリオドの数が破棄・消失したpingパケットの数として確認できる。このオプションはネットワークに対して強烈な負荷をかけるため、スーパーユーザーでのみ設定可能 -l (preload) --preload 通常のping送信処理に入る前に、preloadで指定した個数のECHO_REQUESTを出来るだけ早く送信する。preload={1,65535} -p (pattern) --pattern パディングする値を16進数で設定する。このオプションはデータが崩れる問題を抱えたネットワークで有効である。たとえば"-p ff"と設定した場合、ペイロード部のビットは1で埋められる。 -q --quiet 開始/終了時のサマリー以外情報を出力しないようにする。 -R --route pingパケットの通った経路を記録し表示する。ECHO_REQUESTにRECORD_ROUTEオプションをつけることで経路を記録していき、戻ってきたECHO_REPLYに含まれる情報を表示する。注意:IPヘッダに記録しておける最大経路数(9?)には注意すること。(残念ながら)多くのホスト・ルータではこのオプションを無視する。 出力情報の見方 送信中 # ping hoge_host PING hoge_host (192.168.0.3) 56 bytes of data. 64 bytes from 192.168.0.3 icmp_seq=1 ttl=64 time=0.114 ms 64 bytes from 192.168.0.3 icmp_seq=2 ttl=64 time=0.176 ms 64 bytes from 192.168.0.3 icmp_seq=3 ttl=64 time=0.170 ms まず、先頭の出力: PING hoge_host (192.168.0.3) 56 data bytes. は、「hoge_host(IPアドレスは192.168.0.3)に対しデータ長56バイトのECHO_REQUESTを送信する」という意味です。データ長はICMPヘッダとIPヘッダを除いたプリロード部のサイズを表します。 次の出力; 64 bytes from 192.168.0.3 icmp_seq=2 ttl=64 time=0.176 ms は、ECHO_REQUESTに対するECHO_REPLYパケットを受信する度に出力されていきます。 最初の「64bytes」は送信時と違いICMPヘッダ+データ部の合計を表示していることに注意してください。 「icmp_seq=X」はECHO_REQUESTに付けられたシーケンス番号であり、この値の連続性を見ることで、どのパケットが破棄されたかが分かります。 「ttl」はECHO_REPLYのttlフィールドの値を表します。この値はIPルーティングされるたびにデクリメントされるので、ECHO_REPLYが幾つルータを経由してきたかが分かります。言い換えると、ECHO_REQUESTがルータを経由した回数は分からないことを表しています。 「time」はECHO_REQUESTを送信してからECHO_REPLYを受信するまでに要した往復時間(Round Trip Time)を表示します。厳密には、 Start ECHO_REQUEST送信時にデータ部に付与しておいた時刻情報 End 情報を出力しようとしたときの現在時刻 を調べ、両者の差をRTTとして出力しています。なおWindowsのECHO_REQUESTパケットには時刻情報がセットされていないため、PC内部で時刻情報を管理・出力していると思われます。 一方、ECHO_REPLYがタイムアウト時間までに届かなかった場合は以下の情報が出力されます。 64 bytes from 192.168.0.1 Destination Host Unreachable(etc.) Vr HL TOS Len ID Flg off TTL Pro cks Src Dst Data 4 5 00 5400 0000 0 0040 40 01 9c02 192.168.0.1 192.168.0.60 エラーの理由と、送信したIPパケットの情報を出力します。 この後Ctrl+c(SIGINTシグナル)を入力するか、または-cで指定した個数のpingを送信完了すると以下のサマリー情報を出力して終了します。 --- hoge_host ping statistics --- 10 packets transmitted, 10 packets received, 0% packet loss round-trip min/avg/max/stddev = 0.120/0.259/0.659/0.231 ms # 上記は 「10パケットを送信したうち10パケット受信し、破棄率は0%。RTTの最小/平均/最大/標準偏差はそれぞれ0.120/0.259/0.659/0.231msだった」 ことを表しています。これまで送信したパケットについての統計情報です。 ファイル構成 各ファイルの概要 pingフォルダ内のMakefile.am(automakeで使用するMakefileの種、みたいなもの)から抽出。ファイルはまだ他にもあるっぽいので、随時追加。 ファイル名 概要 ping.c ping_echo.c ping_address.c ping_router.c ping_timestamp.c ping_impl.h ping構成ソース全般でインクルードするヘッダファイル。マクロ(用途不明)と時間の統計情報を計算するための構造体が定義されている。 各ファイルのつながり 「ping IPアドレス -c 10」と実行した時の、pingの各ファイル間の構成は次のとおりです。エントリポイントはping.cです。 図の太い線は、Pingが送受信されるごとに関数がコールされているものを表しています。細い線は1回の実行において1回しか呼ばれません。 処理の流れ 基本的な処理の流れ(IPアドレスだけ指定したとき) 関数がどのようにコールされていくかを簡単な説明付きで記述してください。オプション解析→ping開始準備→送信→受信→情報出力という流れを関数コールと紐付けられればベターです。 関数のコールグラフ 「ping localhost -c 4」と実行したときの、関数のコールグラフはこれです。 このコールグラフはpvtraceで作成したトレース情報をgraphvizでグラフ化しています。 グラフ作成の元になったdotファイルは、ここからダウンロードできます。 モジュール構成図 コールグラフを元に、機能面で抽象化したときのモジュール構成図は以下のとおりです。 モジュール構成を図示してください パケット送信 pingプログラムがパケットを送信する時、どのように送信しているかをまとめます。 ソケットの操作 パケットフィールドへのセット パケット受信 pingプログラムがパケットを受信するとき、どのようにしているかをまとめます。 ソケットの操作 パケットフィールドからの情報取得 各関数の処理詳細 各関数の詳細は、長くなるので別ページping(内部関数説明)に記載してあります。 ただしこの章の優先度は低いです。調べていく中で余裕があるときに書いてください。 使用しているテクニック・パターン モジュール構成、デザインパターンや処理内容など、特筆すべき内容をここに書きます。 関数ポインタによるポリモーフィズム pingコマンドで送信するICMPメッセージが異なると、ヘッダ情報、ペイロード、格納データなどがそれぞれで異なります。この処理を1処理の中でswitch文などにより場合分けをしてもよいのですが、pingでは関数ポインタによって処理を分割・抽象化しています。 ping.cのmain()関数でオプションを解析している中で、オプションによってはdecode_type()関数をコールします。この関数では、引数で渡された文字列を見て次のようにping_type変数に関数ポインタを代入しています。 if (strcasecmp (optarg, "echo") == 0) ping_type = ping_echo; else if (strcasecmp (optarg, "timestamp") == 0) ping_type = ping_timestamp; else if (strcasecmp (optarg, "address") == 0) ping_type = ping_address; #if 0 else if (strcasecmp (optarg, "router") == 0) ping_type = ping_router; #endif 各関数と送信するICMPメッセージの種類は以下のとおりです。 メッセージ 使用関数 ICMP echoメッセージ ping_echo() ICMP timestampメッセージ ping_timestamp() ICMP addressメッセージ ping_address() ICMP router discoveryメッセージ(未対応) ping_router() ping_type変数はping.c内でグローバル変数として定義されています(グローバル変数なのはmain()とdecode_type()の2箇所で利用されるからなのですが、その程度ならmain()のローカル変数で済むようにしたほうがスマートな気がします)。 int (*ping_type) (int argc, char **argv) = ping_echo; int型のargc,char**型のargvの2引数を持つ関数へのポインタ(初期値はping_echo)、という意味です。 そして、main()ではオプションの解析が終了したあと最後に return (*ping_type)(argc, argv); とping_typeに格納された関数をコールして終わっています。ICMPメッセージの種別でコールする関数を分けたりしていません。 利点は、呼ばれた側では自分自身が行うべき処理のみを記述すれば良いためメンテナンス性や(関係ない他処理による)バグの混入を防げることです。もしこれを関数ポインタを使わないとしたら、冒頭に挙げた「ヘッダ情報、ペイロード、格納データ」それぞれについて場合分けをして設定処理を記述しなければいけませんので。 また、呼ぶ側の処理内容を統一できている点も利点の1つです。将来の処理追加に対して容易に対応できることが分かると思います。 static関数を別ファイルの関数からコールする static関数であったとしても、別ファイルの関数からコールすることが出来ます。 関数のコールグラフを見ると、ping_echo.cの関数echo_finish()はping.cの関数ping_run()からコールされています。しかし、echo_finish()の関数定義を見ると、 static int echo_finish (void); というようにstatic宣言されています。staticを関数に適用した場合、宣言されたファイルの外側からは見えなくなるのですが、なぜか別ファイルからコールできています。 これは、ping_run()に対してecho_finish()の関数ポインタを渡しているためです。 ping_echo (int argc, char **argv) { return ping_run (ping, echo_finish); } int ping_run (PING *ping, int (*finish)()) { if (finish) return (*finish)(); ping_echo()からping_run()呼ぶときに、echo_finishのアドレスが渡されています。これによりping_run()でもecho_finish()を呼ぶときはどのアドレスにジャンプすればよいかが分かるようになります(もちろん、ping_run()からecho_finish()を明示的にコールすることは出来ません)。 このように、関数ポインタを渡すことでstatic関数でも外部ソースファイルから参照・コールすることができます。関数を公開する範囲を限定することができる点が利点です。 後述するコールバック関数による疎結合の実現でも重要なテクニックです。 クロージャによる関数とデータの一括 まずここでのクロージャは、「関数コールに常に伴うデータ構造(状態保持可)」という意味で考えてください。クロージャ作成による外部データの束縛、というような意味ではないです。 ping_echo.cの関数ping_echo()で、次のように関数を呼んでいます。 ping_set_event_handler (ping, handler, ping_stat); この最後の引数ping_statが、libping.cでは(void*)closureとして扱われ、この後の処理には必ず付いて回るようになっています。つまり、データ構造が処理に束縛されているのと同じ状況になっているのです。 そして呼ばれる先々でデータ構造は更新されていき、分散や平均を求めるのに役立っているわけです。 コールバック関数による管理部と処理の分離 pingのソースは、 pingでのプロトコル動作を実現 → ping.c pingパケットの情報を表示 → ping_echo.c pingパケットのヘッダ部作成や実際の送受信 → libping.c というように、処理によってファイルが明確に分かれています。1はパケットを受信したときに何をするか(ここでは情報の表示)をするのみになっていて、スタート時にはこれら処理の関数ポインタをping.cからping_echo.cに登録し、その次はping_echo.cからlibping.cに処理を登録しています。 関数を直接呼ばず、下位層にイベントハンドルとして登録することで、上位層に変更があっても下位層には影響を受けない、という関係になります。依存方向が片方向に限定されるわけです。 粗結合なので、オプション次第で別のping_address.cやping_router.cに特定層を切り替えても問題はないわけです。 構造化プログラミングやオブジェクト指向プログラミングでも、こうした考えは重要ですので、ぜひマスターしたい知識です。 気づいた・面白い・分からない点 コードを読んでいく中で、気付いた点を以下に記します。 kato (2007/1/23)コマンド追加時にもできるだけ既存処理の修正が少なくなるように設計されているなあ。関数ポインタによる抽象化、コールバック関数によるイベントドリブン(もどき)、などなど。クロージャもある!いやいや、思っていたよりも構造化されていて、参考になるよコレ。思っていたよりも難しい、とも言えるわけだけど。 (2007/2/7)main()でコマンドオプションを解析するときに、struct option long_options[]に対して長いオプションのvalメンバを1文字のオプション文字で設定している。そうか、こうすることで長いオプションと(同じ機能を持つ)短いオプションとを同じcase文の中で扱えるのか。細かいけれど、面白いテクニックだ。 (2007/8/2)このプログラムでは、自動変数をヒープ変数のように使っていることに気がついた。ある関数から次の関数への自動変数の受け渡しがreturn文中での関数呼び出しと共に行われているせいで(末尾再帰チック)、読んだ先の処理が終わるまではスコープの中のままになり、逆にスコープを意識しないでも良いような状況になっている。しかも自動変数なので処理が終われば解放をしてくれて・・・。テクニックの1つだけど、これも面白い。クラスやクロージャ、RAIIなどを言語そのものが提供していなくても、同じ機能を実装するテクニックは、機能を理解する上では大事なことだな、と思ったり。 ichi 気づいた点を書いてください。箇条書きにこだわる必要はないです コメント ※他の人が書いた文章はいきなり修正せず、コメントやメールで一度連絡を取り合ってからにしましょう。あくまで仲良く。 pingはBIOS画面の時点でレスポンスって返ってくるものなのでしょうか?初歩的な質問となってしまうのですが宜しくお願いします。 -- アナスタシア (2007-07-27 08 37 25) 普通は返ってこないと思います。pingはカーネルの上で動く1つのサービスであって、ネットワークスタックが、もしくは少なくともEthernetデバイスドライバは動いていないといけません。しかしBIOSの段階ではとても基本的なことしかできず(http //community.osdev.info/?(AT)BIOS参照)、Ethernetデバイスが動いて、IPが動いて、というのは非現実的、というか無理だと思います。なので、BIOSでPingが返ってくるようなものは無いと思います。(「思います」口調なのは、WakeOnLANとかはどうなっているの?と言われるとよく分かってなくて・・・すみません)ちなみに逆に質問なのですが、どうしてそのような質問をされたんですか?面白い(興味深い)質問でしたので、ぜひ聞かせてください。 -- kato (2007-07-29 23 55 27) ( - )
https://w.atwiki.jp/mhp2ndg/pages/28.html
MHP 攻略 基本事項 ネコのきまぐれスキル (MHP) アイルーキッチン 勲章一覧 クエスト関連 キークエスト (MHP) トレジャーハンター アイテム関連 素材使用用途 (MHP) 飛竜 剥ぎ取り (MHP) 武器 防具スキル一覧 [[]] [[]] [[]] [[]] [[]] 小技 さびた塊生産方法 鉱石集め
https://w.atwiki.jp/vip-mhp2g/pages/138.html
Q.なんでスレないの? A.2011/3/9を最後に消滅しました。アドパスレ民の多くがMHP3雑談スレに置かせてもらっている状態です。 1 読まない (文盲) 2 調べない (能なし) 3 試さない (発想力欠如のアホ) 4 理解力が足りない (馬鹿) 5 人を利用することしか頭にない (死ね) YES → 【見つかった?】 ─ YES → じゃあ聞くな死ね / \ 【探した?】 NO → なら、ねぇよ \ NO → 死ね ★壁殴り代行始めました★ ムカついたけど壁を殴る筋肉が無い、壁を殴りたいけど殴る壁が無い、そんなときに! 壁殴りで鍛えたスタッフたちが一生懸命あなたの代わりに壁を殴ってくれます! モチロン壁を用意する必要もありません!スタッフがあなたの家の近くの家の壁を無差別に殴りまくります! 1時間\1200~ 24時間営業 年中無休! ,.. --‐ "ヽ、 ,.∠´,,.. -‐/ヾ_\ ,,..- " _,,..===,` ,-、゙ヽ. /, ,.. -‐<__,{ ,(´ `ヽ、 (´ォi ゙r-‐ "´ ̄ { ,/´ , , ゙i ミーぅ∪ ∨ ヽ. リ リ `ー ′ 人、,.-、..ヽ,∧_∧ 壁殴り代行では / , { r,( ´・ω・) 同時にスタッフも募集しています / !∨/ `ニニ´/ ̄ヽ 筋肉に自身のあるそこのアナタ! i ゙i /`ヽ、_,,. `ヽ´ ヽ 一緒にお仕事してみませんか? .ハヽ ノ__,.-、 `Y´ `ヽ , 壁を殴るだけの簡単なお仕事です! !. { `,r-{´、 ,..ーヽ ヽ{. ,,..- 、 _ リ /!ゝ、 ゝ_ヘ‐ _,..- "ヽ、._/´_,,. _ ゙ヽ_,ハ / ハ.(`},、 `ヽ.-‐ ,.ハ _ ̄ 、. ヽ、,リ / , ヽ、゙i、ヽ. },`=彡ヾ、 、. 、 ∨ / ヽヽ、 } ヽ}゙¨`)ヒニ彡 、 `` 、.ヽィノ / ヽ. ヽ. イ /´ 7´ \.ヽ `ヽ、_ノ お守りの効率的な集め方は? 集会上位の火山素材ツアーで発掘する。 発掘する場所はココを参考に。ピッケルとモドリ玉持参。 お守り発掘におすすめの装備は? 全身レザーS装備。ケルビかガウシカから剥ぎ取れる上質な毛皮がキー素材。頭はヘルム推奨。 耐暑珠ぶっこんで暑さ無効を発動させると便利。 お守りがあるならスロ3武器使ってさらに盗み無効も発動可能。 無線LANアダプタはGXSじゃないとダメなの? 情報が多いことと安価なことから薦めているだけです。XLink Kaiに対応してればなんでもいいです。 ただし、設定が異なるので注意。ものによってはイベクエ受注が遅いときがあるよ! Xlink kai(ver7.3)が接続時に高確率でエラー落ちするんだが? 713 :以下、名無しにかわりましてVIPがお送りします:2011/02/04(金) 23 32 35.55 ID XTma8hNS0 旧型である7.3使用の場合日本の新鯖に繋いだときはじかれるっぽい 何度もつなぎなおして海外鯖につながるのを待つか(過疎時じゃないとほとんどつながらない) 諦めて7.4にしろ ちゃんとポート開放、ホスト設定して旧UI使用すればそれほどラグくない あとアダプタのIP固定もやっとけ Xlink Kai、アドパ、トンネル系どれがいいの? 現段階では甲乙つけがたい状況です。それぞれのメリットは以下の通り。 Xlink Kai - 導入が安価、プレイヤーが多い、鯖落ちすることがある。 アドパ - 通信安定度が高い。VCが容易。対応ゲームが豊富。 tunnel - 鯖落ちがない。 PSP.NetPlay - kaiとtunnelのいい所取り、開発中のβ版なので何が起こるかわからない、もしぱそこんが爆発しても泣かない 下手なんだけどkaiとかアドパしていい? PSなんて関係ありません。必要なのはやる気。 部屋ないの?需要ないの? 自分で立ろ。 接続テストしたいお スレで募集しろ。
https://w.atwiki.jp/pmyy/pages/45.html
PINGの話 PINGは低ければ低いほど良いです。あまりにも高いとラグが発生します。 10~40くらいまでは体感できないレベルだと思います。 PING改善策 ①無線LAN → 有線にする。 ②不要なアプリケーションをアンインストールする。 注)以下の方法はパソコンに詳しい人向けです(PINGが劇的に改善したという報告もありません僕もわかりません) ③QoSパケットスケジューラのチェックをはずす。 ④オフロードを無効にする ⑤SNP(Scalable Networking Pack)を無効にする ⑥RWIN値最適化 ⑥MTU値最適化 ⑦TCPグローバルパラメーター設定 PINGとは 「サーバーとの応答速度」です。 ネットサーフィンが早くてもPINGが高い可能性もあります。 PINGはサーバーとの距離にも影響を受けますし、自分のネット回線の内容(回線の種類、プロバイダ、ルーターなどなど)にも影響を受けます。 通信速度測定をして通信速度が低ければ、回線の契約を見直すことで改善が期待できます。(bpsとPINGは別物です。) 通信速度は高いけど・・・PINGが高い・・・・という人はサーバーの場所を調べて引っ越ししたらもしかしたら早くなるかもしれないですね。にっこり ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Reference 1.http //intint000.blog96.fc2.com/blog-entry-444.html 2.http //latesanman.blog.fc2.com/blog-entry-45.html 合計: - 今日: - 昨日: -
https://w.atwiki.jp/spirit-green/pages/4.html
その名の通りモンスターハンターポータブル(以下MHP)やそろそろ発売MHP2ndのページですw
https://w.atwiki.jp/ityo-go/pages/13.html
Ping 意味 ICMPを用いて任意の機器との疎通を確認 通信相手との往復にかかる時間を計測 ネットワークのMTU計測(ping -f -l 1472) 用法 最近○○ちゃんから、Pingの応答ないんだよね(´・ω・`)(メール送ったのにレスがない場合) ○○ちゃんにPing打ったんだけど、遅延がデカい(メール送ってから返信来るまでの間隔が長い) 備考 Pingの応答がない場合、エンドエンドではなく中間にある機器も被疑箇所である。中間機器を特定するにはTracerouteを行う パケットのドロップ、ロス、廃棄が発生しているかも(ファイアウォールなど) Pingを打つには相手のIPアドレスが必要(電話番号/メールアドレスなど) そのIPに到達するためのルーティングも必要(通信経路) IPアドレスを得るには、その前にMACアドレスが必要(別セグメントの場合はデフォゲのMAC)(名前とか?) MACアドレスがわからない場合は、ブロードキャストが必要(合コンに参加など) ブロードキャストを送るためにはLinkUpしていなければならない(とりあえずアクティブにならなきゃ!) 関連項目 Traceroute IPアドレス コメント