WiMAXルータでの無通信タイムアウトによってTCPソケットの経路上でサイレントで切断された症状のように思われます。
クライアント側・サーバ側・もしくはその両方にて、TCP KeepAliveを有効にし、適切な生存確認の間隔を設定する方法を検討しても良いかと思います。
shogi-server を Linux上で動作させていた場合の例ですが、
https://ja.osdn.net/projects/shogi-server/scm/git/shogi-server/blobs/master/shogi-server shogi-server:492 に記述がありますが、tcp_keepalive_timeなどの設定値を変更することが考えられます。 ``` client.setsockopt(Socket::SOL_SOCKET, Socket::SO_KEEPALIVE, true) # Keepalive time can be set by /proc/sys/net/ipv4/tcp_keepalive_time ```
https://tldp.org/HOWTO/html_single/TCP-Keepalive-HOWTO/
サーバ側の設定変更案) tcp_keepalive_time を 7200 から 60 に変更 tcp_keepalive_intvl を 75 から 5 に変更 tcp_keepalive_probes は 9 のまま (生存確認を60秒おきに行う、応答が無ければ5秒おきに再送、9連続で応答が無ければ接続を閉じる)
クライアント側(Windows)に関しては、レジストリキー HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Service\TCPIP\Parameters の KeepAliveTime のREG_DWORD値を短めに設定する、プログラム側でもTCPソケット接続作成時にKeepAliveを有効にする、等があるかもしれません。(詳細は未確認です) https://docs.microsoft.com/ja-jp/windows/win32/winsock/so-keepalive
|
|