====================================================================== IP Messenger for Java ver.1.35 取り扱い説明書 2003/01/11 Original version H.Shirouzu shirouzu@ntt-it.co.jp Java version T.Kazawa kazawa@ca2.so-net.ne.jp ====================================================================== ■概要 ・IP(UDP)を使った簡単なメッセージ送受信ソフトウェアです。 ・オリジナルは白水さんが作成された Win32 版であり、このソフトはその Java への移植版です。オリジナルは以下にあります。 ・JDK1.1(Final)以降の API を持つ JavaVM が必要です。テストは Win32、 Solaris の JDK1.1.5、IBM JDK1.1.8 for Linux で行いました。 ・Java のみの特徴として、Proxy 機能内蔵、同一ホスト上で複数の IPMSG を 起動可能といったことがあります。UNIX のようなマルチユーザー環境では便 利なのではないでしょうか? ■インストール方法 ・このプログラムの実行には、まず JDK1.1(またはそれに相当する Java Application 実行環境)をセットアップしてください。JDK1.1.5 は Javasoft のホームページからダウンロードできます。 開発環境が必要ない方は、Java Runtime Environment というパッケージも上 記 URL から取得できます。また、HotJava 1.0 をお使いの方は、その JavaVM を流用することも可能です。 ・Microsoft の JDK1.1 対応 JavaVM でも一応動作するようです。実行方法はアー カイブを展開したディレクトリにて次の通り入力すれば OK です。 C:\> jview /cp:a IPMsg.jar Main ・また、KFC 版で同梱版でないものの場合は、別途 KFC のアーカイブも入手し あらかじめその中の「kfc.jar」を下記のアーカイブ展開ディレクトリにコピー しておく必要があります。 ・その後、適当なディレクトリでバイナリアーカイブを展開した後、そのディ レクトリにて > jre -cp IPMsg.jar Main (通常版) > jre -cp IPMsg.jar:kfc.jar Main (KFC 版) と入力することで実行できます(> はプロンプト)。MRJ(Macintosh Runtiume for Java)での実行方法はわかりません。知っておられる方、ぜひ教えてくださ い。 ・Java2 以降では、Windows 上では IPMsg.jar をダブルクリックするだけでも起動 出来ますし、次のようにすることでも起動できます。 > java -jar IPMsg.jar ・jre がない場合は、環境変数 CLASSPATH に IPMsg.jar(KFC 版の場合は kfc.jar も) を追加し、 > java Main とすることでも実行できるかもしれません。 ・それでもうまく行かない場合は、jar アーカイブを解き(jar xf IPMsg.jar) そのディレクトリで > java Main と入力してみてください。 ・Java2 以降をお使いの方は、例えば下記のサイトから JCE Provider を入手 することで暗号化対応出来ます。 http://www.bouncycastle.org/ http://www.bouncycastle.org/download/jce-jdk13-117.jar 上記アーカイブを CLASSPATH に追加することで、暗号化可能な場合には自動 的にメッセージが暗号化されるようになります。 他の JCE Provider を利用したい場合は、jar アーカイブ内に含まれるプロ パティファイルに書かれたプロバイダ名を変更してください。 ・アンインストールは、アーカイブを展開したディレクトリのファイルを全て 削除することにより行えます。設定ファイルも同じディレクトリに置かれて います。 ■使用方法 ○メインウィンドウ ・送信ボタン メッセージを送信するときに使います。メンバーリストから送信したい人を 選ぶか、または同報チェックを入れた後送信ボタンを押してください。 ・更新ボタン メンバーリストを更新したいときに押してください。 ・設定ボタン 各種設定を行う設定ダイアログが表示されます。 ・終了ボタン プログラムを終了したいときに押してください。Window を閉じることでも 同様の処理が可能です。 ・User、Group、Host ボタン メンバーリストソート用のボタンです。最後に押したボタンが最優先になる よう、ソートされます。 ・メンバーリスト その時点でメッセージ送信可能なメンバーのリストが表示されます。 ・同報チェックボックス メンバー全員への同報メッセージを送信したい場合にチェックしてください。 グループリストによりフィルタリングされている場合は、そのグループの人達 のみへのマルチキャストとなります。 ・グループリスト その時点でリストに表示されている人の所属するグループのリストです。 「全て」以外を選択することで、そのグループ以外の人をリストから見えな くすることが出来ます。 ・不在チェックボックス 席を外すときなどにチェックしてください。不在メッセージを登録している 場合、何かメッセージを受け取ったときに自動返信します。 ○送信ダイアログ ・メッセージ部 送信したいメッセージを入力してください。 ・送信ボタン メッセージを送信する時に押してください。 ・封書チェックボックス 開封確認の出来る封書としてメッセージを送りたいとき、チェックしてくだ さい。 ・施錠チェックボックス 受取人がパスワードを入力しない限り開けない鍵付きメッセージとして送り たいとき、チェックしてください。封書をチェックした後でないとチェック できません。 ○受信ダイアログ ・メッセージ部 受信したメッセージが表示されます。 ・返信ボタン 差出人宛てに返事を書きたいとき、押してください。 ・引用チェックボックス 返信時、元のメッセージを引用したい場合チェックしてください。 ○設定ダイアログ ・ニックネーム 自分のニックネームを入力してください。 ・グループ 自分の所属するグループを入力してください。空欄とすることで所属グルー プなしにも出来ます。所属グループなしと無所属は異なることに注意! ・不在メッセージ 不在時、自動返信するメッセージを入力してください。空欄の場合は自動返 信を行いません。 ・ブロードキャストアドレス ローカルネットワーク以外の人達と通信したい場合に指定します。詳しくは 後述。アドレスを入力後、「>>」ボタンを押すことで追加できます。また、 リストからアドレスを選択後「<<」ボタンを押すことで削除できます。 ・パスワード パスワード設定を行います。左から順に、古いパスワード(未設定の場合は 空欄にしてください)、新しいパスワード、再度新しいパスワードを入力し ます。古いパスワードを間違えたり、2つの新しいパスワードが異なる場合 なども特に警告は出ません。パスワードが変更されないだけです。 ・ログファイル名 メッセージのログを残したい場合にファイル名を指定してください。 ■複数のネットワークでの使用について ・このソフトがメッセージをやり取り出来る範囲は基本的にはローカルネット ワーク内のみですが、適切なブロードキャストアドレスを追加することで ローカルでないネットワーク上のメンバともメッセージのやり取りが出来ま す。 ・例えば、メッセージをやり取りしたいメンバが「192.168.1.0/24」というネッ トワークにいる場合、ブロードキャストアドレスに「192.168.1.255」とい うアドレスを追加することで相手を認識できるようになります。 ・よく分からないときは(笑)、相手の IP アドレスをブロードキャストアド レス欄に追加すると、その相手とメッセージのやり取りが可能になります。 ■ポート番号によるグルーピングについて ・このソフトは、デフォルトでポート番号 2425 番の UDP を使用します。 もしすでにネットワーク上でこのポートの UDP が使用されているとその元々 のプログラムを誤動作させる危険性があります。その時は本ソフトウェアの使 用を停止するか、別のポート番号を使うようにしてください。もし業務等で使 用されているネットワーク上で本ソフトウェアを使う場合、念のためネットワー ク管理者の方へ問い合わせた方がよいかもしれません。 ・ポート番号を指定すると、同じポート番号を指定している IP Messenger と だけメッセージのやり取りが出来るようになります。特定のグループで使い たいときに使用可能です。 ・なお使用するポート番号の指定は、一回でも実行すると自動作成される runtime.properties というファイルに、「ports=xxxx」という一行を追加す ることで可能です。 ・また、「ports=xxxx,yyyy」とカンマで区切って複数のポートを指定すること により、複数のポートにまたがってメッセージをやり取りすることも出来ます。 ■Proxy 機能 1.30 以降の Java 版には Proxy 機能があります。Proxy 機能とは、異なるネッ トワーク間のメッセージのやり取りを中継する機能のことです。同様のことは ブロードキャストアドレスの指定でも行えますが、何らかの原因でブロードキャ ストが届かない場合など、Proxy 機能を使うことで解決出来るかもしれません。 また、ローカルネットワーク内に Proxy があれば、個別のクライアントでいちい ちブロードキャストアドレスの設定をする必要がなくなります。 まず、Proxy 機能を使うにはそれぞれのネットワークに1台づつの Java 版 IP Messenger が必要です。 Proxy には Active モードと Passive モードがあります。それぞれのネットワー クの IP Messenger の内、どちらか一方を Active モードにする必要があります。 Proxy 通信に使う TCP コネクション(2425 番を使用します)は、常に Active 側から接続要求が出されます。また、Java 版 IP Messenger は常に Passive モー ドの Proxy として動作しています。 具体的な設定方法は、Active 側の IP Messenger の runtime.properties に、 「proxy=xxx.xxx.xxx.xxx」と Passive 側の IP アドレスを指定するだけです。 この指定により次回以降 Active Proxy として起動することになります。 さらに、Proxy 経由で受け取った Broadcast Packet を、自分の持っている全て の Broadcast Address 宛てに送信するよう設定することも出来ます。上記同様 runtime.properties ファイルに「proxyBroadcastAll=true」という一行を追加 してください。この設定により、Proxy の向こう側で個別に Broadcast アドレ スが設定してあるようなセグメントに対しても、Proxy のこちら側の端末から メッセージが送信できるようになります。 ※注意注意注意!!!!!!!!!!!!!!!!!!!!!!!!!!!!! Proxy 機能により二つのネットワークを接続した場合には、各クライアントのそ れらのネットワークに関するブロードキャストアドレス指定は解除してください。 さもなくばメンバーリストが重複してしまうでしょう。 また、ループになってしまうように Proxy を設定しないでください。多分 Packet が飛びまくってしまうと思います。あくまでも Tree 状に。 1.2 以前の Java 版や MailMsg などの、毎回不定なポートからメッセージを発信 するクライアントから Proxy へメッセージを投げないようにしてください。仮想 クライアントの数が増大し、正常に処理出来なくなってしまいます。 一つの Proxy で処理できるクライアントの数は、同時に開ける DatagramSocket の数によります。実際にいくつくらいなのかはちょっとわかりません。 ○技術情報 Proxy 間のプロトコルとしては、 [src ip addr]:[src port]:[dst ip addr]:[dst port]:[original packet]\0\0\0 が一つのパケット、というものです。クリスマスに ML 公開した IPMsgProxy と 違い、TCP ストリームは繋ぎっぱなしで、末尾の null 3個で終端を検知するよう にし、また接続は常に Active 側から行うようにしました。これにより IP マスカ レードなどにも対応しやすくなったのではないかと思うのですが、いかがでしょう か? 以前の IPMsgProxy では複数の Proxy に対する接続も可能でしたが、今回のもの は1対1のみです。複数の Proxy が接続されるとパケットのルーティングが結構め んどうになってしまうため今回は見送りました(前回はその辺をちゃんと実装して いなかったのです)。複数の Active Proxy を一つの Passive Proxy へ接続する ことは可能ですが、正常に動作しないと思います。 ■その他、Java 版での制限事項など。 ・デフォルトでは各チェックリストは前回の状態を記憶するようになっていますが、 記憶させたくない場合は runtime.properties に「resumeState=false」という 一行を追加してください。この事により、たとえば自分の好きな状態を保存させ た状態で resumeState=false にすれば、デフォルト設定を変更することができ ます。 ・Win32 版でのダイアルアップオプションと同様の動作をさせるためには、同じ く runtime.properties ファイルに「dialupState=true」という一行を書き加 えてください。 ・複数の IP アドレスを持つマシンで動作させる場合、runtime.properties に 「localAddress=xxx.yyy.zzz.aaa」という行を追加することで使用する IP を 選択することが出来ます。 ・ホストリスト関係のメッセージには応答しません。また、NOLOG、ニューバージョ ンマルチキャスト、サーバオプションは処理されません。GETINFO には一応応答 しますが、これって使うことあります?(Java 版ではどうがんばっても使えませ ん) ・ホスト名は DNS 的な名前になります。また、ユーザー名はニックネームを登 録しないと Java のシステムプロパティから得られる user.name になります。 ・パスワードを忘れてしまった時は、runtime.properties ファイルに書かれ ている「password=...」という一行を消去してください。各種設定は全てこの ファイルに書かれています。設定を引き継ぎたい時などはこのファイルをコ ピーしてください。ただし、動作中に runtime.properties ファイルを書き換 えても無意味ですので、今まさに届いた鍵付き封書が開けない、というときは あきらめるしかありません。「さっきの手紙のご用事なあに」と聞き返しましょ う。 ・マルチポートではなく、ポート毎に別々のプログラムを立ちあげたい場合は、 ディレクトリを分けて実行してください。 ・不在モード時にアイコンは変化しません。すみません。 ・ログファイル形式は出来る限り Win32 版に近づけたつもりなのですが、非互 換部分もあるのではないかと思います。ご報告いただければ修正します。 ・Linux 等で動かす場合通常版ですとうまく日本語を表示、入力することがで きない場合があります。そのような時は KFC 版を使ってみてください。なお、 JDK1.1 の場合 KFC を用いると日本語をインライン入力することは出来なく なります。 ・たまに(頻繁に?)ハングすることがあります。そういう時はプログラムを 実行した MS-DOS プロンプト(or シェル)で Ctrl-C することで大抵の場合 止められます。今のところ原因不明です。落ちないときはぜんぜん落ちない のですが。求む情報。また、Win32 版では kernel32 内でアプリケーション エラーが起きることがあります。この原因も不明です。 ・何か動作がおかしい、と思ったときは、プログラムを起動したプロンプトを 見ると、エラーメッセージが表示されているかもしれません。バグ報告など もエラーメッセージとともにいただけると大変助かります。 ■免責表示 お約束ですが、本ソフトウェアを使用することで起きたあらゆる損害その他に 対する責任を作者である私は負いません。使用者各個人の責任において使用し てください。 ■取り扱い IP Messenger for Java は元々の Win32 版と同様、ソースコード、バイナリ ともにフリーウェアです。再配布、改変などにも特に制限は設けませんので、 どんどんやっちゃってください。添削してくれるとうれしいかも(^^;。 ■サポート 最新バージョンは以下の URL から取得できます。 サポートは IPMsg-ML で行っています。メール等いただければ可能な限り対処 します。なお、元版と非互換になってしまうような拡張に関しては私はするつ もりはありません。 IPMsg-ML に関しては、前述の白水さんのページを参照してください。 ■変更履歴 var.1.40 ... 暗号化通信対応 var.1.35 ... Proxy 用 Connection の KeepAlive を行うようにした。 proxyBroadcastAll 設定の追加。 var.1.34 ... バグフィックス var.1.33 ... 受信ダイアログの同時オープン数を50個に制限(DoS 攻撃対策)。 var.1.32 ... 実はローカル IP アドレス指定にバグあり(汗)。 KFC 版を用意。 ver.1.31 ... ローカル IP アドレスを指定可能に。 ver.1.30 ... ソースコード全面書き換え。 Group 化にようやく対応。 Proxy 機能内蔵。 複数の Port 番号に対応。 ソースポートをきちんと認識。 設定ダイアログデザイン変更。 IPMSG_GETINFO メッセージに答えるようになりました。 返信後も受信ダイアログが残ってしまうのは仕様です(^^;。 メンバーリストソート機能をようやく実装。 IPMSG_DIALUPOPT を付けられるようにした。 Proxy の応用で単一ホストで複数のクライアントを立ちあげられ るようになりました。 ログファイルを Win 版へ近づけました。 ver.1.21β .. ソケットの使い方を正しく修正。 version 1.30 と正しくメッセージをやり取りできるよう、\0 以降のデータは破棄するように修正。 受信ウィンドウの位置を揺らがせるようにした。 ダイアルアップオプション付きメンバに対応。 同一パケット破棄ルーチン追加。ただし元版と互換性があるか どうか自信なし。 ブロードキャストパケットスケジューリングを変更。 封書受信ダイアログのデザイン変更。 引用符号の付き方がおかしかったのを修正。 各ダイアログの初期フォーカスの整理。 ver.1.2β ... 更新ボタン押下時処理のバグを除去。 ver.1.1β ... 未開封封書メッセージを残してプログラムを終了したとき、 きちんと破棄メッセージが飛ぶようにした(つもり)。 リストに存在しないメンバからのメッセージでも、受信ダイ アログに名前が表示されるようにした。 存在しないメンバがいつまでもリストに残ってしまうバグの 除去。 ver.1.0β ... 公開版