FAQ

ERR=0236が発生して、ソケット受信エラーとなる

実行エラー236h(0236h)(相手側からRST を受信し、コネクションが切れました。)が発生して、ソケット受信がエラーになります。どのような原因が考えられますか?

実行エラー0236hは、BHTがサーバからRST(接続のリセット要求)を受信した場合に、発生するエラーです。
サーバは、以下のような場合に、RSTを送信します。
・ オープンしていないポートに受信した接続要求を拒絶する場合
・ 双方向コネクションが成立していない状態(ハーフオープン状態)を終了する場合
 TCP/IPでは、通信中に一方(Aとします。)がダウンして通信を終了した場合、他方(Bとします。)はしばらく再送を繰り返します。Bの再送中に、Aが復帰して、Bに対してTCP再接続を要求した場合に、Bは接続をやり直すために、RSTを送信します。

 

サーバにTCPパケットをモニタするソフトウェアを導入し、通信状況を調査してください。また、どのような経緯でサーバがRSTを送信しているかを調査してください。
・BHTが接続しようとするサーバのポートがオープンされて、Listen状態になっているかどうか。
・サーバ側の送信処理でエラー等が起きて、コネクションを異常終了(切断)していないかどうか。
・双方向コネクションが成立していないコネクション接続過程で、セッションを切断していないかどうか。

BHTでは、以下のような原因で236hエラーが発生する事例を確認していますので、参考にしてください。
 

発生事例 推奨の対処方法
ソケット通信をしている最中に、BHTの電源をオフして通信を終了し、再度、電源オンして通信を再開しようとした。

BHTアプリケーションで、以下のような対処が考えられます。
・TCP通信中は、電源キー押下時間を長く設定し、電源オフしにくくする。
・TCP通信中に電源オフ操作をした場合は、サーバ側が再送している間(リトライタイムアウトするまでの間)は、サーバへの再接続をしないようにする。
・エラー236hをエラートラップし、再接続処理を行う。

サーバが接続を許可する端末台数を制限していたところへ、制限台数以上のBHTが接続しようとした。 サーバの設定を見直してください。
サーバが、一定時間データを受信がない場合にソケットをクローズする設定となっていたところへ、BHTが時間を空けて送信した。 サーバの設定を見直してください。
サーバの空きポート番号確認が不十分で、TIME-WAIT状態のポートを使用していた。 サーバの設定を見直してください。

お問合せ

QBdirect

まだ会員に登録されていない方

本会員専用サイトにおけるサービスは、会員登録していただいた上でのみご利用いただけます。

新規会員登録