Tips

RECEIVE PACKETのエラー

日付2009/03/17
ID09-024
バージョン11
プラットフォームWin, Mac

RECEIVE PACKETで通信エラーではないエラーが返されることがあります。

RECEIVE PACKETの2番目のパラメータ(データを受け取る変数)にテキスト変数を渡しているとき、4Dは受けとったデータをUTF16の文字セットに変換します。このとき4Dが利用しているローレベルライブラリがエラーを返すと、結果的にRECEIVE PACKETがエラーになります。ローレベルライブラリがエラーを返す理由は、文字変換に失敗したことを意味します。

こうした文字セットの変換の失敗で通信が止まることを防ぐためには、RECEIVE PACKETでテキスト変数に受けとらずに、一旦BLOB変数に入れるようにしてください。通信が一段落した所で、必要ならConvert to textなどでBLOB変数からテキスト変数に変換します。キストに取り出す時に、おそらく同じエラーが発生することになりますが、その際にはON ERR CALLでエラー処理を行うようにします。

RECEIVE PACKETでテキスト変数を指定しながら、ON ERR CALLでエラー処理行うようにすることも不可能ではありません。しかしそのような方法ですと、エラーの原因が通信で起きたものであるか文字変換で起きたものであるか、原因を分けて処理を行わなくてはならなくなります。RECEIVE PACKETでBLOB変数に受けとる方がエラー処理が簡単です。

参考資料