RTP2 RTSP 응답을 읽는다는 것 - 왜 recv() 한 번으로 끝내면 안 되는가 들어가며: 생각보다 만만하지 않다RTSP 클라이언트를 직접 구현하려고 마음먹으면 처음에는 이렇게 생각하기 쉽다. 서버가 RTSP/1.0 200 OK\r\n... 같은 문자열을 보내는데, recv() 한 번 호출해서 문자열로 파싱하면 끝나는 것 아닌가?겉으로 보면 그렇다. 응답은 텍스트이고, HTTP와 구조도 비슷하다. 그래서 자연스럽게 “한 번에 온다”는 전제를 깔고 코드를 짜게 된다. 그런데 실제로 테스트를 해보면 이상한 일이 생긴다.헤더가 중간에서 잘린다.SDP body가 반만 들어온다.어떤 경우에는 응답 두 개가 붙어서 한 번에 들어온다.그제야 깨닫게 된다. 문제는 RTSP가 아니라, TCP를 잘못 이해한 데 있었다는 것을.TCP는 메시지가 아니라 바이트 흐름이다TCP는 “메시지 단위” 프로토콜이 .. 2026. 2. 25. RTSP 클라이언트를 만들기 전에 꼭 해야 할 준비― mediamtx + FFmpeg으로 테스트 환경 먼저 만들기 들어가며 ― 왜 서버부터 준비해야 할까?RTSP 클라이언트를 직접 만들어보겠다고 마음먹으면, 보통은 이런 생각이 먼저 든다.“일단 코드부터 짜보자.” 나 역시 그랬다. 뭔가를 만들겠다고 하면 손부터 움직이는 편이라서.그런데 RTSP는 혼자서는 아무 일도 못 한다. 구조적으로 그렇다. 반드시 서버와 미디어 소스가 있어야 한다. RTSP는 데이터를 실어 나르는 프로토콜이 아니다. 영상 파일을 직접 보내는 게 아니라, “재생해라”, “멈춰라”, “이 스트림을 열어라” 같은 제어 명령을 주고받는 역할에 가깝다. 말 그대로 리모컨이다. 그래서 테스트를 하려면 최소한 이 세 가지가 필요하다.항상 떠 있는 RTSP 서버그 서버에 붙어 있는 영상 소스(H.264 등)결과를 확인할 수 있는 검증용 플레이어클라이언트를 제.. 2026. 2. 21. 이전 1 다음