Eu suspeito que o seu problema é mais porque tudo o que envia os pacotes UDP não é adicionar um caractere de nova linha aos comandos (como no caso eles devem enviar "play\n"
e não apenas "play"
).
Em qualquer caso, se você quiser que uma nova conexão TCP seja criada para cada um dos pacotes UDP, use udp-recvfrom
em vez de udp-listen
in socat
:
socat -u udp-recvfrom:3333,fork tcp:localhost:50000
Em seguida, todo pacote UDP deve acionar uma conexão TCP que é ativada apenas para enviar o conteúdo do pacote e, em seguida, encerrada.
Teste fazendo:
echo play | socat -u - udp-sendto:localhost:3333
(que envia um pacote UDP cuja carga contém os 5 bytes "play\n"
).