高度な検索
Developer Connection
Member Login ログイン | ご入会 ADC連絡先



NW 46 - スリープ状態または Doze 状態の Macintosh に接続する

(97 年 1 月 31 日)

Q: 現在、TCP/IP 経由でリモートマシンに接続し、そのマシンで実行されているバックグラウンドアプリケーションとの間で情報をやり取りするアプリケーションを開発しています。しかし、目的のマシンがスリープモードに入っていると、そのマシンに接続することができません。マシンがスリープモードに入っている間も、ネットワークサービスを生かしておく方法はあるのでしょうか。ネットワークサービスではなく、シリアルポートを生かしておく方法は読んだことがあります。

A: Macintosh (通常は PowerBook) が "スリープ" 状態に入っていると、ネットワークリクエストに応答できなくなります。つまり、実際には接続がシャットダウンされているということです。ただし、Macintosh コンピュータの中には、スリープではなく "Doze" と呼ばれる省電力モードに入るものもあります。

スリープ状態に入らないようにするのは簡単で、その方法は『Inside Mac: Devices』の Power Manager の章にある "The Sleep Queue"" Sleep Procedures " で詳しく説明されています。また、「TN 1046: Inside Macintosh: Devices - Power Manager Addenda」でも詳細な情報が公開されています。

システムがスリープ状態または Doze 状態に入らないようにするには、次の処理を行います。
1. SleepQRec をメモリに割り当てます (システムヒープ内が望ましい)。
2. それをセットアップして、sleepHandler を呼び出せるようにします。
3. Mac がスリープまたは Doze に入ろうとするとき、sleepRequest または dozeRequest セレクタを使って sleepHandler を呼び出します。
4. スリープが発生しないようにするには、単純にゼロでない値を返すようにします。

Doze 状態の場合、OpenTransport ネットワーキングが無効になることはなく、設定されている TCP 接続は通常通り機能しているはずです。ただし、マシンの Doze 状態を解除するには、短時間にいくつかのパケットを受信させる必要があります (1 秒間当たり 10 パケット程度)。あるいは、何よりもマシンが Doze 状態に入らないようにすべきかもしれません。

いずれにせよ、特に仮想メモリが“入”になっていて、ハードディスクの回転が停止しているときには、ネットワークが回復するまでに多少の時間がかかります。

Energy Manager を制御する方法については、「TN 1086: 節電と省エネルギー設定 API」を参照してください。

--Vinnie Moscaritolo
devsupport@apple.com

[ Technical Q&A's : Communications & Collaboration : Networking : NW46 ]