vlc 미디어 플레이어에 대한 제어 명령을 중계하기 위해 socat/netcat을 사용하여 UDP-TCP 브리지를 생성합니다.

vlc 미디어 플레이어에 대한 제어 명령을 중계하기 위해 socat/netcat을 사용하여 UDP-TCP 브리지를 생성합니다.

UDP - 포트에서 수신 대기해야 합니다. TCP - 서버에 연결해야 합니다.

나는 노력 netcat했고 socat.

nc -v -u -l -p 3333 | nc -v 127.0.0.1 50000

socat -v UDP-LISTEN:3333,fork TCP:localhost:50000

둘 다 작동합니다. 메시지를 전달하지만 아직 끝나지 않았습니다. VLC는 netcat/socat을 닫은 경우에만 명령을 허용합니다.

연결을 모니터링했는데 sockettest메시지가 다음과 같은 줄에 차례로 표시되었습니다.

playpausestopexitadd

전송된 메시지가 다음과 같도록 줄을 끝내야 합니다.

play
stop
exit
add

어쩌면 패킷이 아직 끝나지 않았을까요?

특정 시간 이후에 패킷/종료 라인을 보내는 옵션이 있는지 nc알고 싶습니다 .socat

\n@roaima가 제안한 대로 출력에 추가 하면 play\nstop\nplay\n한 줄이 표시됩니다.

답변1

"play\n"나는 귀하의 문제가 명령에 개행 문자를 추가하지 않고 UDP 패킷을 보내는 것에 관한 것이라고 생각합니다 ( 그 대신에 보내야하기 때문에 "play").

어쨌든, 모든 UDP 패킷에 대해 새로운 TCP 연결을 생성하려면 다음 udp-recvfrom대신 udp-listen다음을 사용해야 합니다 socat.

socat -u udp-recvfrom:3333,fork tcp:localhost:50000

그런 다음 각 UDP 패킷은 패킷 내용을 전송하는 데만 사용되는 TCP 연결을 트리거한 다음 닫아야 합니다.

다음을 수행하여 테스트하십시오.

echo play | socat -u - udp-sendto:localhost:3333

(페이로드가 5바이트인 UDP 패킷을 보냅니다 "play\n".)

관련 정보