実行エラー0236hは、BHTがサーバからRST(接続のリセット要求)を受信した場合に、発生するエラーです。
サーバは、以下のような場合に、RSTを送信します。
・ オープンしていないポートに受信した接続要求を拒絶する場合
・ 双方向コネクションが成立していない状態(ハーフオープン状態)を終了する場合
TCP/IPでは、通信中に一方(Aとします。)がダウンして通信を終了した場合、他方(Bとします。)はしばらく再送を繰り返します。Bの再送中に、Aが復帰して、Bに対してTCP再接続を要求した場合に、Bは接続をやり直すために、RSTを送信します。
サーバにTCPパケットをモニタするソフトウェアを導入し、通信状況を調査してください。また、どのような経緯でサーバがRSTを送信しているかを調査してください。
・BHTが接続しようとするサーバのポートがオープンされて、Listen状態になっているかどうか。
・サーバ側の送信処理でエラー等が起きて、コネクションを異常終了(切断)していないかどうか。
・双方向コネクションが成立していないコネクション接続過程で、セッションを切断していないかどうか。
BHTでは、以下のような原因で236hエラーが発生する事例を確認していますので、参考にしてください。
発生事例 | 推奨の対処方法 |
---|---|
ソケット通信をしている最中に、BHTの電源をオフして通信を終了し、再度、電源オンして通信を再開しようとした。 |
BHTアプリケーションで、以下のような対処が考えられます。 |
サーバが接続を許可する端末台数を制限していたところへ、制限台数以上のBHTが接続しようとした。 | サーバの設定を見直してください。 |
サーバが、一定時間データを受信がない場合にソケットをクローズする設定となっていたところへ、BHTが時間を空けて送信した。 | サーバの設定を見直してください。 |
サーバの空きポート番号確認が不十分で、TIME-WAIT状態のポートを使用していた。 | サーバの設定を見直してください。 |