[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 メーリングリストの案内