Estou usando socat
para encaminhar o tráfego serial de entrada para uma porta UDP local (no macOS):
socat OPEN:/dev/cu.usbmodem13203 UDP:localhost:12345
Considero um dispositivo serial uma interface de streaming, enquanto o UDP é baseado em pacotes, portanto não existe uma resposta certa definitiva onde ou como introduzir limites de pacotes. No meu teste, cada byte é encaminhado como seu próprio pacote UDP. Por exemplo, ao enviar a string "XYZ", meu servidor de teste gera:
Datagram: X
Datagram: Y
Datagram: Z
Por que a sequência de bytes é dividida em vários pacotes e qual é o mecanismo por trás disso? Existe alguma maneira de controlar esse comportamento?
De acordo com os comentários,
socat
sempre lê e encaminha os dados assim que estiverem disponíveis no descritor de arquivo e esse comportamento não deve ser configurável.Portanto, isso depende do kernel e do tipo de arquivo (dispositivo) ou driver subjacente e não é controlado por
socat
si só.