
서버 측:
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를 사용하십시오.