AIRアプリからSocketにて通信しようとするときに、接続できない場合での一般的な例外がどのようなエラーとなるのかが、
よくわからないのでちょっと調べてみた。

ケース1)サーバが見つからないとき、もしくはそのサーバに接続できないとき

  1. 接続ができないとわかった段階で「IOErrorEvent」のイベントが発行される。
  2. Socket.timeoutたったあと「SecurityErrorEvent」のイベントが発行される。

ケース2)ポートが開いていないとき(サービスが上がっていないとき)

ケース1と同様

  1. 接続ができないとわかった段階で「IOErrorEvent」のイベントが発行される。
  2. Socket.timeoutたったあと「SecurityErrorEvent」のイベントが発行される。

ケース3)ポートがFirewall(iptablesで受け付けない)で拒否をされているとき。

  1. Socket.timeoutたったあと「SecurityErrorEvent」のイベントが発行される。
  2. 接続ができないとわかった段階で「IOErrorEvent」のイベントが発行される。

ここで、イベントの順番が今までと違ってきました

ケース4)ポート番号がおかしいとき、「90000」とか・・・

  1. 「SecurityError」の例外が投げられる。
  2. Socket.timeoutたったあと「SecurityErrorEvent」のイベントが発行される。

しかし、接続できなかったときには、どっちのイベントで捕まえればいいのかなと思っていましたが、
「SecurityErrorEvent」、「IOErrorEvent」も両方発行されるのですね。

ケース4のように命令としておかしくても、「SecurityErrorEvent」のイベントが発行されるようなので、
エラーはたいてい「SecurityErrorEvent」で処理をしておけば大丈夫ってことでしょう。

Socket.timeoutできちんと処理をあきらめたいということであれば、
なおさら、「SecurityErrorEvent」で処理をしたほうがいいということかな。

お仕事のご依頼・相談を承ります
この記事に関連するお仕事のご依頼やご相談をお待ちしております。 詳しくは、こちら

Leave a Reply

お仕事のご依頼・相談
この記事に関連するお仕事のご依頼やご相談をお待ちしております。 詳しくは、こちら
ソフトウェア&ライブラリ




ライブラリ
airxmail(en)
AIR版メール送受信ライブラリ
airxzip
AIR版ZIP圧縮・解凍ライブラリ
執筆書籍
本、雑誌等

WEB記事:CodeZine
執筆記事はこちら
カレンダー
2009年9月
« 8月   10月 »
 123456
78910111213
14151617181920
21222324252627
282930  

カスタム検索
RSS
Add to Google < !–adsense–>
アーカイブ
カテゴリ
にほんブログ村 IT技術ブログへ