接続サービスの仕組み
8月 28th, 2006
amemboと転送バッタに組み込まれてる簡単接続サービス。
どうやってるの??としばしば聞かれるので、ここに書いちゃおうと思います。
と言っても何も特別なことはしてなくて、アイデア料理みたいな感じです。
目的はもちろん、IPアドレスとポートの教える手間を省くこと。
みなさんはIDからどうやってアドレスを引いてるか、と考えるからきっと分からないんだと思います。逆です。
どうやってアドレスをIDとして相手に教えるか??と考えることが重要です。
このソフトは、それ自身だけでそれを解決していません。
つまりサーバを用意し、そこに情報を登録したり読み出したりすることによって実現しています。
これが”接続サービス”という名の所以です。
では具体的な仕組みについてですが、手順を追って説明します。
サーバにまずサービス用のCGIかPHPなどを用意します。
ユーザーのコンピュータはそのスクリプトにアクセスします。その時サーバへ自動的にクライアント情報が送られます。
スクリプトはその情報からIPアドレスを取得します。
クライアントはインターネットを介して接続してきた訳ですから、そのIPは当然WAN IPですよね。なのでLAN環境からのアクセスでも正しくWAN IPを取得できます。
で、アクセス時に一緒に使用ポートと登録したいIDを送ります。
スクリプトはそれらをファイルかデータベースなどに一時的に保持します。
接続相手のユーザーのコンピュータは、同じくスクリプトにアクセスします。
教えてもらったIDの情報を要求するリクエストをサーバに送ります。
スクリプトは先ほど保持した情報を、クライアントに返します。
最後に、ユーザーがソフトを終了するときや切断の時などに、登録した情報を削除すれば一連のサービスは完了。
何の特別な知識も必要なく出来そうですねw
では実際にPHPで、情報をクライアントから取得する所を組んでみます。
<?php
// ID
$id = $_GET['id'];
// 使用ポート
$port = $_GET['port'];
// IPアドレス取得
$addr = $_SERVER['REMOTE_ADDR'];
// ファイルやデータベースに保存する
…
?>
こんな感じ。もう説明要りませんね。

Leave a Reply