RTSP调试代码 (三)

2014-11-23 22:57:57 · 作者: · 浏览: 18
ockaddr*)&addr, &nlen) < 0) lret = -1; else { lret = 0; *port = addr.sin_port; } return lret; } long ReadSocket(int sock, char *buf, int len, int timeout ) { long lret ; int iret; fd_set fr; timeva l tm; tm.tv_sec = timeout; tm.tv_usec = 0; FD_ZERO(&fr); fr.fd_count = 1; fr.fd_array[0] = sock; lret = select(sock, &fr, NULL, NULL, &tm); if(lret > 0) { lret = recv(sock, buf, len, 0); if(lret == SOCKET_ERROR) { } else if(lret > 0) { logwr((void*)"***Recive:\r\n", 12); logwr((void*)buf, lret); } } return lret; } long SendRTSPCmd( int sock, const char *cmd, const char *szparam ) { long lret; int ilen; ilen = strlen(szparam); lret = send(sock, szparam, ilen,0); if(lret == SOCKET_ERROR) { lret = WSAGetLastError(); } logwr((void*)"***Send:\r\n", 10); logwr((void *)szparam, ilen); return lret; } char * GetRTSPCmd( const char * szName) { char *str = NULL; char const* cmdFmt = NULL; if(!strcmp(szName, "OPTIONS")) { cmdFmt = "OPTIONS %s RTSP/1.0\r\n" "CSeq: %d\r\n" "%s" "%s" #ifdef SUPPORT_REAL_RTSP REAL_OPTIONS_HEADERS #endif "\r\n"; } else if(!strcmp(szName, "ANNOUNCE")) { cmdFmt = "ANNOUNCE %s RTSP/1.0\r\n" "CSeq: %d\r\n" "Content-Type: application/sdp\r\n" "%s" "Content-length: %d\r\n\r\n" "%s"; } else if(!strcmp(szName, "PLAY")) { cmdFmt ="PLAY %s RTSP/1.0\r\n" "CSeq: %d\r\n" "Session: %s\r\n" "%s" "%s" "%s" "%s" "\r\n"; } else if(!strcmp(szName, "PAUSE")) { cmdFmt = "PAUSE %s RTSP/1.0\r\n" "CSeq: %d\r\n" "Session: %s\r\n" "%s" "%s" "\r\n"; } else if(!strcmp(szName, "RECORD")) { cmdFmt = "RECORD %s%s%s RTSP/1.0\r\n" "CSeq: %d\r\n" "Session: %s\r\n" "Range: npt=0-\r\n" "%s" "%s" "\r\n"; } else if(!strc
mp(szName, "SET_PARAMETER")) { cmdFmt = "SET_PARAMETER %s RTSP/1.0\r\n" "CSeq: %d\r\n" "Session: %s\r\n" "%s" "%s" "Content-length: %d\r\n\r\n" "%s: %s\r\n"; } else if(!strcmp(szName, "GET_PARAMETER")) { cmdFmt = "GET_PARAMETER %s RTSP/1.0\r\n" "CSeq: %d\r\n" "Session: %s\r\n" "%s" "%s" "Content-type: text/parameters\r\n" "Content-length: %d\r\n\r\n" "%s\r\n"; } else if(!strcmp(szName, "TEARDOWN")) { cmdFmt = "TEARDOWN %s RTSP/1.0\r\n" "CSeq: %d\r\n" "Session: %s\r\n" "%s" "%s" "\r\n"; } else if(!strcmp(szName, "DESCRIBE")) { cmdFmt = "DESCRIBE %s RTSP/1.0\r\n" "CSeq: %d\r\n" "%s" "%s" "%s" #ifdef SUPPORT_REAL_RTSP REAL_DESCRIBE_HEADERS #endif "\r\n"; } else if(!strcmp(szName, "ANNOUNCE")) { cmdFmt = "ANNOUNCE %s RTSP/1.0\r\n" "CSeq: %d\r\n" "Content-Type: application/sdp\r\n" "%s" "Content-length: %d\r\n\r\n" "%s"; } else if(!strcmp(szName, "SETUP")) { cmdFmt ="SETUP %s" "CSeq: %d\r\n" "%s" "%s" "%s" "%s" "\r\n"; } str = (char*)cmdFmt; return str; } char * GetOptionCmd( char *url ) { int nlen, iret; char *ss; char *s = GetRTSPCmd("OPTIONS"); nlen = strlen(s); iret = nlen + strlen(url) + strlen(PP_NAME) + 200; ss = (char*)malloc(iret); sprintf(ss, s, url, 1, PP_NAME, PP_CRLF); return ss; } char * GetDescribeCmd( char *url ) { int nlen, iret; char *ss; char *s = GetRTSPCmd("DESCRIBE"); nlen = strlen(s); iret = nlen + strlen(url) + strlen(PP_NAME) + 200; ss = (char*)malloc(iret); sprintf(ss, s, url, 2, PP_NAME, PP_CRLF, PP_CRLF); return ss; } char * GetPlayCmd( char *url , char *session, char *range) { int nlen, iret; char *ss; char *s = GetRTSPCmd("PLAY"); nlen = strlen(s); iret = nlen + strlen(url) + strlen(PP_NAME) + 200; ss = (char*)malloc(iret); //