[Squeak-ja: 2503] Re: Windows 版 Squeak での UDP パケット受信について

e-itoh @ ygu.ac.jp e-itoh @ ygu.ac.jp
2005年 7月 5日 (火) 11:13:59 JST


山梨学院大学の伊藤です。

みなさま、アドバイスをいただきありがとうございます。
光明が見えてきたものの、まだ最終的な解決はできておりません。

武田さん、梅澤さん>>

receiveDataInfo:を使ってみたところ、下記のサンプルで動作することを確認
できました。

receiver := Socket newUDP setPort: 54321.
buff := ByteArray new: 100.
delay := Delay forMilliseconds: 100.
localhost := NetNameResolver localHostAddress.
received := nil.
Transcript show: 'Receiver start'; cr.
received := receiver receiveDataInto: buff.
Transcript show: 'received(', received asString, '-', buff, ')'.
Transcript show: 'Receiver end'; cr.

昨日同様のコードを試したときはダメだったのですが、どうやら気が動転して
ミスしてしまったようです。すみません。

ここからが挙動のおかしいところです。

本来のプログラムは1秒おきにAIBOに向けてUDPのパケットを送り続け、AIBO
からパケット受信したらそれを表示するというものです。

そこで、sendData:とreceiveDataInfo:を使って1秒おきに送受信を繰り返す
ようにしたところ、AIBOが起動中には想定どおりの動き(パケットのエコーバッ
ク)をするものの、AIBOの電源を途中で切るとスクイーク側がブロックしてし
まいます。

止まるのはいつも、Socket>>waitForDataIfClosed:です。dataAvailableは
通過しているのでreadSemaphoreで止まっているように思えます。

なお、Unix版ではそのようなことにはならず、AIBOの停止、実行に関わりな
くパケットの送受信を行えます。

今日はVMのビルドに再チャレンジしてみます。みなさま、何か他にもアドバ
イスがございましたらよろしくお願いいたします。

P.S.
梅澤さんへ>>

  素のnihongo7へPackage LoaderからRemote Broadcasting Toolkitをinstall
したら以下のようなエラーでインストールできませんでした。

Error occurred during install:
UndefinedObject>>readOnlyFileNamed:
Would you like to open a debugger?

SARInstaller>>fileInで、directoryがnilになってました。こちらは別途原因
究明しようと思います。



Squeak-ja メーリングリストの案内