// RTSPoverHTTP.cpp : Defines the entry point for the console application. // #include "stdafx.h" #include #include int main(int argc, char* argv[]) { int result; WSADATA WsaData; ULONG uSock1; // input socket. get RTSP response. ULONG uSock2; // output socket. send RTSP request. struct sockaddr_in ServerAddr; char szAddr[] = "192.168.13.4"; char szCmd[1024]; char szRtspCmd[1024] = "T1BUSU9OUyAqIFJUU1AvMS4wDQpDU2VxOiAxDQoNCg=="; // base64 encoded request /* OPTIONS * RTSP/1.0\r\n CSeq: 1\r\n\r\n */ result = WSAStartup (MAKEWORD(2,2), &WsaData); if (result) { return FALSE; } // create input socket if((uSock1 = socket(AF_INET, SOCK_STREAM, 0)) < 0){ return FALSE; } // create output socket if((uSock2 = socket(AF_INET, SOCK_STREAM, 0)) < 0){ return FALSE; } memset(&ServerAddr, 0, sizeof(ServerAddr)); ServerAddr.sin_family = AF_INET; ServerAddr.sin_addr.s_addr = inet_addr((const char*)szAddr); ServerAddr.sin_port = htons(80); result = connect(uSock1,(struct sockaddr*)&ServerAddr, sizeof(ServerAddr)); if(result == SOCKET_ERROR){ closesocket(uSock1); return 0; } result = connect(uSock2,(struct sockaddr*)&ServerAddr, sizeof(ServerAddr)); if(result == SOCKET_ERROR){ closesocket(uSock1); return 0; } sprintf(szCmd, "GET /0 HTTP/1.0\r\n" "x-sessioncookie: 944345808\r\n" "Accept: application/x-rtsp-tunnelled\r\n\r\n"); send(uSock1, szCmd, strlen(szCmd), 0); recv(uSock1, szCmd, sizeof(szCmd), 0); sprintf(szCmd, "POST /0 HTTP/1.0\r\n" "x-sessioncookie: 944345808\r\n" "Content-Length: 32767\r\n" "Content-Type: application/x-rtsp-tunnelled\r\n\r\n"); send(uSock2, szCmd, strlen(szCmd), 0); Sleep(500); // send base64 encoded RTSP request. sprintf(szCmd, szRtspCmd); send(uSock2, szCmd, strlen(szCmd), 0); ZeroMemory(szCmd, sizeof(szCmd)); // get RTSP response. recv(uSock1, szCmd, sizeof(szCmd), 0); printf(szCmd); closesocket(uSock1); closesocket(uSock2); printf("press enter key to exit application\n"); getchar(); return 0; }