泉市章 UNIX用リアルタイムチャット mai 泉市章

[使い方] [便利な機能] [ダウンロード] [インストール] [トラブルシューティング]
[部員のプロジェクトへ戻る]

maiスクリーンショット

スクリーンショット

mai とは

mai は UNIX 用ローマ字リアルタイムチャットプログラムです。 基本操作は talk, phone, okphone 等と同じで、1文字入力するたびに 会話に参加している人全員の画面が更新されるため、 リアルタイムでのチャットが可能です。 perl スクリプトにより実装されたサーバ/クライアントシステムでシンプルです。 また、乱入機能、ログ機能、バックスクロール機能などが使えるように改良されています。

おしらせ

最新版は下記の環境で動作を確認しました。

下記の環境では動作に問題がありました。 もし解決方法が分かる方がいらっしゃいましたらご教授下さい。

旧バージョン(Version 2.19以前, 要Curses.pm)のページはこちら

FreeBSD のOS付属の write コマンド関係の問題で、maid を起動した端末を終了すると、ユーザの呼び出しができなくなるという問題が報告されています。現在対策中です。
 → Version 2.19 以降、 maid スクリプトをカスタマイズした上で($BUILTIN=1; に変更する)、maid(サーバ) を root 権限で起動することにより、UNIX の write コマンドを使わずにユーザを呼び出すことができるようになりました。FreeBSDではこの方法でお使い下さい。

・ Version 2.18 から、"maid" は自動的にバックグラウンドで実行されるようになりました。"&" をつけると起動できませんのでご注意ください。

・ Version 2.20 から、Perl モジュール "Curses.pm" がインストールされていないマシンでも動くようになりました。
 → UNIX の tput コマンド で画面の文字数を取得するために、ncurses は必要です。
・ Version 2.23 から、標準(環境変数 "MAILOG" が未設定のとき)では ${HOME}/.mailog/ 以下にその日の日付のファイル名 "yyyymmdd.log" でログを残すようにしました。


使い方

ユーザの呼び出し

コマンドラインから呼び出したい相手のユーザ名を指定して "mai ユーザ名" コマンドを 実行します。

% mai ユーザ名

呼ばれたユーザ側の画面には以下のように表示されますので、引数なしで "mai" コマンドを実行すると応答できます。

message from nobody@gamera on pts/3 at 00:01 ...
mai: connection requested by 【呼び出し側ユーザ名】. respond with 'mai'
EOF

% mai
(チャット開始)

ローマ字変換規則

チャット中、ローマ字を入力すると、送信時に自動的にひらがなに変換されます (ただし mai コマンドが "-a" オプション付きで起動された場合には全くローマ字変換されずに 送信されます)。

便利な機能

チャット中に他のユーザーを呼ぶ

チャット中に "ESC-call 【ユーザ名】" を入力すると、現在のセッションにユーザを呼ぶ ことができ、3人以上でのチャットが行えます。"ESC-cancel 【ユーザ名】"で呼び出しを キャンセルできます。

実行中のチャットに参加する(乱入機能)

自分が呼ばれていないときに、コマンドラインから引数なしで "mai" コマンドを実行すると、 現在行われているチャットの番号(セッションID)の一覧が表示されますので、 乱入したいセッションIDを指定して "mai 【セッションID】" を実行すれば、そ のセッションに加わることができます。

乱入を禁止/許可する

チャット中に "ESC-l"(Lock) を入力すると、現在のセッションへの乱入が禁止されます (引数なしで mai を実行したときのセッションIDも表示されなくなります)。 "ESC-u"(Unlock) を入力すると乱入が許可されます。デフォルトは乱入許可です。

スクロールアウトした会話を見る

チャット中に "Ctrl-b"(Backlog の意味。トグルになっています)を入力すると、画面下部に新 しくウインドウが開き、現在までの会話内容が表示されます。このウインドウは↑,↓, PageUP,PageDownキー等でスクロールさせることができ、スクロールアウトした 過去の会話を見ることができます。このウインドウは自分以外のメンバーには見えません。

ファイルにログを残す

チャット開始前に、環境変数 "MAILOG" を設定しておくと、会話内容をログファイルに記録 することができます。 また、チャット中いつでも "ESC-s 【ファイル名】"(Save) を入力すると、現在までの会 話を指定したファイルに保存することができます。
"ESC-load 【ファイル名】" を入力すると、指定したファイルをログウインドウに 読み込むことができます。 この時ファイル名を省略すると、デフォルトのファイル名(その日の日付)のログが 読み込まれますので、mai を一旦終了してしまって再開したときに、 終了前までの会話をログウインドウに復旧できます。

その他

"mai -h" コマンドを実行すると機能一覧が表示されます。

ダウンロード

Version-2.25

mai Version-2.25(tar+gzip)
mai Version-2.25(lha)

Version-2.23

mai Version-2.23(tar+gzip)
mai Version-2.23(lha)

Version-2.21

mai Version-2.21(tar+gzip)
mai Version-2.21(lha)

Version-2.20

mai Version-2.20(tar+gzip)
mai Version-2.20(lha)


【アーカイブに含まれるファイル】
mai: クライアントプログラム
maid: サーバプログラム
README_sjis.txt: このページの URL

旧バージョン(Version 2.19以前)のページはこちら


動作環境とインストール

【FreeBSD で使う場合の注意】
FreeBSD では、maid コマンド中の "$BUILTIN=0;" を "$BUILTIN=1;" に書き換えた上で maid コマンドを root 権限で起動 しないと、ユーザを正常に呼び出せません(呼び出しメッセージが呼ばれた側の端末に表示されなくなります)。

概要

本チャットシステムは サーバ(maid), クライアント(mai)の対で動作します。 "mai","maid" とも Perl スクリプトです。 チャットを開始するためには、サーバ(maid)がいずれかのユーザの権限で 動かされている必要があります。 キー入力、画面出力はともに EUC であると仮定しています。

動作環境

maid コマンド(サーバ)を実行するために必要なもの mai コマンド(クライアント)を実行するために必要なもの

サーバのカスタマイズ

本サイトからダウンロードしたアーカイブを展開してできたファイル "maid" の先頭付近の

# ----- ここはシステムによっては変更が必要です -----

という行以下の数行をシステムに合わせて書き換えてください。 "write" コマンドが日本語に対応しているシステムの場合(Linux等)は、この設定により 呼び出しメッセージを日本語にできます。

サーバの実行

mai を使用するためには、サーバプログラム "maid" が起動している 必要があります。"mai","maid" は一般ユーザでも実行できます。コマンドラインから

% maid

を実行してください。Version 2.18 から、"maid" は "-f" オプションをつけない限り、 自動的にバックグラウンドで実行されるようになりました。 "&" をつけると起動できませんので、旧バージョンからバ ージョンアップする際は注意してください。

トラブルシューティング

バージョンアップ後の動作がおかしい

実行している mai と maid のバージョンが同じことを確認してください。 mai, maid とも "-v" オプションを付けて起動するとバージョンが表示されます。

mai 【ユーザ名】でユーザが呼び出せない

呼び出される側のユーザが "mesg y" コマンドを実行した後で呼び出してみてください。 また、maid の先頭付近の $CMD_WRITE, $CMD_USERS 変数に、それぞれ "write","users" コマンドのフルパスを代入してください。

※ FreeBSD では、maid スクリプト中の "$BUILTIN=0;" を "$BUILTIN=1;" に変更し、 maid を root 権限で起動 しないと、ユーザを正常に呼び出せません。

mai 実行時に以下のようなエラーが出る

IO::Socket::INET: 接続を拒否されました ...propagated at /usr/local/bin/mai line 93.

maid が動いていません。チャットを開始するためには、サーバプログラム(maid)がいずれかの ユーザの権限で動かされている必要があります。

maid 実行時に以下のようなエラーが出る

IO::Socket::INET: アドレスは既に使用中です ...propagated at /usr/local/bin/maid line 50.

既に maid が実行中であるか、maid の待ち受けポート(11167)が他のサーバプログラムに よって使用中か、接続中のクライアントが残っている時に maid を終了した可能性があります。 接続中のクライアントが残っている時に maid を終了してしまった場合は、まず接続中の mai を全て終了し、数分間時間を置いてから maid を再起動してください。

注意点

参考: mai のプロトコル

変更履歴(上が新しい情報)

2003/12/19 Version-2.25 公開。画面右端の1文字が表示されない現象を修正。
2002/10/16 Version-2.23 公開。ESC-load(バックログのロード)追加。ログファイル名変更。
2002/07/31 Version-2.21 公開。ESC-kill(指定ユーザの切断)コマンド追加。
2002/07/05 Version-2.20 公開。mai が Curses.pm に依存しなくなった。

[部員のプロジェクトへ戻る]
hoshi@proc.org.tohoku.ac.jp