資源簡介
主要演示了RTSP的各種協議指令的使用,并能正常播放音頻與視頻。

代碼片段和文件信息
#ifdef?_WIN32_WCE
#include?“stdafx.h“
#endif
#ifndef?_WIN32_WCE
#define?WIN32_LEAN_AND_MEAN
#endif
#include?
#include?
#include?
#include?
#include?
#include?
#include?
#ifdef?_WIN32_WCE
#pragma?comment(lib?“ws2.lib“)
#else
#pragma?comment(lib?“ws2_32.lib“)
#endif
#define??PP_NAME?“User-Agent:?Master?1.0\r\nPrivate:?NOTIFY“
#define??PP_NAME1?“User-Agent:?Master?1.0“
#define??PP_CRLF?“\r\n“
//測試之用
//打開連接
long?InitSocket();
//關閉連接
long?DeInitSocket();
//初始化tcp?socket
long?InitTCPSocket(int?port);
//初始化udp?socket
long?InitUDPSocket(const?char?*ip?int?port);
//取socket端口號
long?GetSokcetPort(int?sock?int?*port);
//讀取數據
long?ReadSocket(int?sock?char?*buf?int?len?int?timeout);
//發送命令數據
long?SendRTSPCmd(int?sock?const?char?*cmd?const?char?*szparam);
//解析rtsp命令回應數據
long?PraseRTSPCmd();
long?PraseOptionCmd(const?char?*sz);
long?PraseDescribeCmd(const?char?*sz);
long?PraseSetupCmd(const?char?*sz?char?*sess);
long?PrasePlayCmd(const?char?*sz);
long?GetResponseCode(const?char?*sz);??//取返回值
//////////////////////////////////////////////////////////////////////////
//字符串操作函數?
static?char*?getLine(char*?startOfLine);
//生成rtsp發送命令
char?*?GetRTSPCmd(const?char?*);
char?*?GetOptionCmd(char?*url);
char?*?GetDescribeCmd(char?*url);
char?*?GetPlayCmd(char?*url?char?*session?char?*range);
char?*?GetSetupCmd(char?*url?int?port1?int?port2);
char?*?GetReportCmd(char?*);
//////////////////////////////////////////////////////////////////////////
//日志函數
long?logwr(void?*?int?len);
//全局變量定義區
fd_set?rfdsock;
//日志寫入文件指針
FILE?*fp?=?NULL;
//
//////////////////////////////////////////////////////////////////////////
//rtsp請求解析
long?PraseURL(const?char?*url?char?*szip?int?*iport);
int?_tmain(int?argc?_TCHAR*?argv[])
{
?int?sockin?sc1?sc2;
?sockaddr_in?addr;
?char?*buf?*szcmd?*url*strUrl;
?char?szip[32]={0};
?int?nlen?iret?iport;
?int?ip1?ip2;
?long?lret;
?//初始化變量
?FD_ZERO(&rfdsock);
?fp?=?fopen(“1.txt“?“w+“);
?//分配緩沖區
?nlen?=?10240;
?buf?=?(char*)malloc(nlen);
?strUrl=(char*)malloc(300);
?memset(strUrl0300);
?memset(buf010240);
?
?//定義要連接的url
//url?=?“rtsp://192.168.1.43:2554/realmp3.mp3“;
??url?=?“rtsp://192.168.0.111:80/“;
?//url?=?“rtsp://192.168.1.43/1.amr“;
?//初始化sock
?long?lRet=InitSocket();
?//分析url請求,取出ip,端口
?lret?=?PraseURL(url?szip?&iport);
?sprintf(strUrl“rtsp://admin:123456@%s:%i/vga.sdp“szip?iport);
?
?//初始化與服務器連接的socket
?sockin?=?InitTCPSocket(0);
?
?//與服務器連接
?addr.sin_family?=?AF_INET;
?addr.sin_port?=?htons(iport);
?addr.sin_addr.s_addr?=?inet_addr(szip);
?iret?=?connect(sockin(struct?sockaddr*)&addr?sizeof?addr);
?//發送option命令
?szcmd?=?GetOptionCmd(url);
?lret?=?SendRTSPCmd(sockin?“OPTIONS“szcmd);
?free(szcmd);
?lret?=?ReadSocket(sockin?buf?nlen100);
?
?//發送DESCRIBE命令
?szcmd?=?GetDescr
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????文件??????14163??2012-01-06?16:33??Rtsp.cpp
-----------?---------??----------?-----??----
????????????????14163????????????????????1
- 上一篇:語音頻譜分析程序
- 下一篇:需求工程--軟件建模與分析 期末復習題
評論
共有 條評論