socatはサーバー側が終了したときにudpクライアントを終了しません

socatはサーバー側が終了したときにudpクライアントを終了しません

サーバ側:

socat udp-l:2023,reuseaddr,fork exec:/bin/bash,pty,setsid,setpgid,stderr,ctty

クライアント側:

socat -,raw,echo=0 udp:localhost:2023

bash を終了すると、サーバー側は終了しますが、クライアントは終了しません。

[root@udp-server-v1-9cdc7f96f-pwdjq /]# exit
exit
^C[root@udp-server-v1-9cdc7f96f-pwdjq /]# 

この後、任意のキーを押すと、socat は再びサーバーに接続します。ps -ef は、サーバー側が新しい bash をフォークし、新しい接続であることを示します。

答え1

UDP はコネクションレスです。サーバーが終了したときにクライアントに通知は送信されません。

この動作が必要な場合、そしてデータの確実な配信が必要な場合は、UDP ではなく TCP を使用してください。

関連情報