ActionScript3.0 の Socket を使用したアプリ作ってたらこんな問題にぶち当たったメモ。

Error #2044: ハンドルされていない SecurityErrorEvent : text=Error #2048: セキュリティサンドボックス侵害

Flex Builderのデバッガやローカルからの実行なら起こらないっぽい問題。

色々調べてみると

crossdomain.xml といったポリシーファイルを作成しなければいけないとのこと。

そして Socket 接続する前に Security. loadPolicyFile( “http://ドメイン/crossdomain.xml” ) を呼び出して、そのポリシーファイルを読み込まなければならない。

・・・との事だったのだが、せっせと置いて呼び出してもうんともすんとも言やしない。

これはどうしたものか・・・と悩みつつ調べていたら、どうやら最近セキュリティー系のアップデートがかかって Socket を使う場合、↑では駄目になったらしい。

今までの話はいったんなかったことにして

どうすれば良いのかというと。

1.Flashアプリが、843ポートに接続してくるのを待ち受ける。
2.<policy-file-request/> 文字列を投げてくるので、受け取る。
3.<policy-file-request/> 文字列を受け取ったら、ポリシーファイルを投げ返す。

以上。

そんな常駐アプリをつくればよい。
しかし、自分で作らなくても、なんとすでにAdobeの人が作成してくれている。

こちらに。

↑からダウンロードしてきたファイルの中で使ったものは、

Standalone/flashpolicyd.pl
flashpolicy.xml

の2個。

とりあえず flashpolicyd.pl を cp ../ して
flashpolicy.xml を下記のように書き換えた。

<?xml version="1.0"?>
<!DOCTYPE cross-domain-policy SYSTEM "/xml/dtds/cross-domain-policy.dtd">
<cross-domain-policy>
<site-control permitted-cross-domain-policies="all"/>
<allow-access-from domain="*" to-ports="*" />
</cross-domain-policy>

全部おkっぽい仕様(テスト用)

そして実行。

sudo ./flashpolicyd.pl --file=flashpolicy.xml

とりあえずこれで試してみたら、無事に socket 通信できた。
しかしめんどくさ(笑
まぁこれから弄くりたおしつつ理解を深めていこうかな。

追記 2008-05-09

Flashアプリは、843ポートにまず要求を送り、そこで返答がなければ、接続先ポートに要求を送る。さらにそこで返答がなければ、接続に失敗する。

要求を843ポートで受けたくない場合は、接続先ポートで要求を受けてポリシーファイルを返してやると、うまく行く。

参考[猫とか2 Flash ソケットポリシーへの対応]

 

ActionScript3.0 の Socket を使ってみたとき、接続に失敗したときの処理が分からなかったんだけど、やっと分かった。

try catch でやるのかなーと思ってたけど、どうやら違ってイベントをとらえるらしい。

socket.addEventListener( SecurityErrorEvent.SECURITY_ERROR, onSecurtyError );
socket.addEventListener( IOErrorEvent.IO_ERROR, onIOError );

↑こんな感じで。

◇サンプルソース
client_air.as

いままでサーバがないと不快なエラーメッセージがポップアップされていたけど、テキストで表示されるようになってスッキリした。

いやえがったえがったー。

client_air.air.zip

 

昨日に続いてちょっとした改良を加えてみた。

タスクトレイに格納して設定と終了をつけたのと、軽いバグフィックス。

まぁこんなもんでだいたい完成だべな。

しかし、これのおかげでうちのPCの消し忘れ率が確実に減った。

いやーわれながら便利であるナー。
まだだいぶテケトーな部分多いけども。

とりあえずまたアプリだけ置いてみる。
万が一使いたい人いたらご自由に( ´-`)
PC自動シャットダウン確認付きアプリ ver 0.2

 

PCをつけっぱで寝る家族の為に、PC自動シャットダウン確認アプリをつくってみた。

設定時間中につけっぱだと確認ダイアログが現れ、反応しないと20秒後に自動シャットダウンする仕組み。

使用中だったときにシャットダウンするか確認する機能が欲しかったので自分でつくってみた。

こーゆーちょっとしたプログラムをすぐつくれるのがプログラマの良いとこだな!

動作確認はXPのみ。Vista持ってないしの( ´-`)

PC自動シャットダウン確認アプリ ver 0.1

 

ここ最近、1~2年ぐらいカラオケに行く度に必ず歌う曲を唐突に紹介。

それは、タイトルにもある通り、「ルパン三世のテーマ」

相方さんが、「歌詞がカッコイイ」と言いつつ歌ってるのを聞いたのがキッカケなんすけど、これがまたホントにカッコ良い。

ニコニコ動画で見つけてつい嬉しくなって書いてしまった。

↓1分35秒あたりからの歌詞つきがさいこー。

あと関係ないけど、昔のふじこちゃんの方が、何倍もせくしーと思う。
あの流し目が良いんだよな!

4月 072008
 

iframeを使ったページをhttpsで開くと警告が出る問題。

何が悲しいって「IE6 + select + ポップアップ + javascript」で紹介したバグ潰しをうっかり適用すると、httpsに持ってったとき、警告が頻発する事に。
バグを解決する為に、バグを作り出すなんて本当に最悪!

解決するためには、src=’javascript:false;’ を追加してあげれば良いみたい。

<iframe src=’javascript:false;’></iframe>

↑こんな感じ。

IE7では例によって修正されているのかな。

参考

4月 042008
 

ここ2日ばかり腹痛に襲われていまして。
昨日あたりは虫垂炎かと本気で心配してたけど、どうやら違ったみたい。

あまりにも心配しすぎて色々ネットで調べてたら虫垂炎に少し詳しくなった。
せっかくなのでメモしてみる。

虫垂炎は、盲腸の先端に大腸菌などの菌が侵入して炎症を起こした状態。

症状として、腹痛と吐き気を催し、熱が37度を超えるらしい。

さらに放置していると大体24時間~48時間ぐらいで虫垂炎様が破裂し、下手するとお亡くなりになるほど症状が重くなるそうな。

破裂した場合、破裂しなかった時に比べて治りが遅くなる模様。

一般的に外科やらなんやらで先っぽを切除をする。
薬でちらす事も可能だけど、再発の可能性は高く、軽度の炎症を繰り返すこともあるそうな。

大体こんな感じのうろ覚え。

まさか破裂することがあるとはナー。

小学生の頃、1度虫垂炎になって薬でちらしただけに、再発コワス。