最近頂いたQAです。
Q.
IBM i でクライアントとソケット通信でテータ送受信する仕組みを構築したお客様で、クライアント側の操作がおかしい場合や誤操作した際などにIBM i 側とのソケットコネクションを設定したインターバル時間経過後にIBM i 側から遮断(リセット)したい
以下のようなロジックを記述しているがタイムアウト値が動作しない
・ILE RPGでSOCKET()でソケットを作成
・LISTEN()で待ち受け → ACCEPT()でクライアントから接続
・通常は、RECV()でクライアントからのデータを受信
・この時、クライアント側の誤操作その他が発生した際に、あらかじめ決めた秒数経過後に、RECV()処理をタイムアウトにしたい。
ご相談いただいた時点では、タイムアウトが設定できずクライアントからの異常なリクエストの通信がスタックして滞留するケースが発生していました。