socat은 패킷 경계를 어디에/어떻게 삽입합니까?

socat은 패킷 경계를 어디에/어떻게 삽입합니까?

socat들어오는 직렬 트래픽을 로컬 UDP 포트(macOS)로 전달하는 데 사용하는 것 :

socat OPEN:/dev/cu.usbmodem13203 UDP:localhost:12345

직렬 장치는 스트림 인터페이스이고 UDP는 패킷 기반이므로 명시적인 내용은 없습니다.옳은패킷 경계를 도입할 위치와 방법에 답하십시오. 내 테스트에서는 각 바이트가 자체 UDP 패킷으로 전달됩니다. 예를 들어 "XYZ"라는 문자열을 보내면 테스트 서버는 다음을 출력합니다.

Datagram: X
Datagram: Y
Datagram: Z

바이트 시퀀스가 ​​여러 패킷으로 분할되는 이유는 무엇입니까? 그 뒤에 있는 메커니즘은 무엇입니까? 이 동작을 제어할 수 있는 방법이 있나요?

답변1

설명에 따르면 socat파일 설명자에 사용 가능한 데이터가 있는 한 데이터는 항상 즉시 읽고 전달되며 이 동작은 구성할 수 없습니다.

따라서 이는 커널과 (장치) 파일 유형 또는 기본 드라이버에 따라 다르며 socat자체적으로 제어할 수 없습니다.

관련 정보