65 lines
1.8 KiB
C
65 lines
1.8 KiB
C
#include "librtsp.h"
|
|
|
|
RtspClient *ConectRtsp(char *ip,int port,char *desc){
|
|
if(0 == ip || 0 == desc){
|
|
return 0;
|
|
}
|
|
RtspClient *ret = (RtspClient*)malloc(sizeof(RtspClient));
|
|
ret->sock = Connect(ip,port);
|
|
if(ret->sock < 0){
|
|
return 0;
|
|
}
|
|
strcpy(ret->hostIp,ip);
|
|
ret->port = port;
|
|
ret->cesq = 0;
|
|
strcpy(ret->despcrtion,desc);
|
|
return ret;
|
|
}
|
|
|
|
int SendOption(RtspClient*p,CallBack *c){
|
|
char pRecv[500];
|
|
char buf[500];
|
|
sprintf(buf,"OPTIONS rtsp://%s:%d/%s RTSP/1.0\r\nCSeq: %d\r\nUser-Agent: Lavf57.71.100\r\n\r\n",p->hostIp,p->port,
|
|
p->despcrtion,p->cesq);
|
|
int ret = Send(p->sock,buf,strlen(buf));
|
|
printf("send %d \r\ndata is:\r\n%s\r\n",ret,buf);
|
|
if(0 > ret){
|
|
closesocket(p->sock);
|
|
p->conn = FALSE;
|
|
return -1;
|
|
}
|
|
if(Recv(p->sock,pRecv,500) > 0) {
|
|
printf("recv: %s\r\n",pRecv);
|
|
} else{
|
|
printf("error recv ");
|
|
return -1;
|
|
}
|
|
}
|
|
|
|
int SendAnnounce(RtspClient *p,CallBack callback){
|
|
char pRecv[500] = {0};
|
|
char buf[500] = {0};
|
|
char length[10] = {0};
|
|
sprintf(buf,"ANNOUNCE rtsp://%s:%d/%s RTSP/1.0\r\nContent-Type: application/sdp\r\n"
|
|
"CSeq: %d\r\nUser-Agent: Lavf57.71.100\r\nContent-Length:",p->hostIp,p->port,
|
|
p->despcrtion,p->cesq);
|
|
sprintf(length,"%d",strlen(buf));
|
|
int len = strlen(buf) + 7 + strlen(length);
|
|
sprintf(length,"%d",len);
|
|
strcat(buf,length);
|
|
strcat(buf,"\r\n\r\n");
|
|
|
|
int ret = Send(p->sock,buf,strlen(buf));
|
|
printf("send %d \r\ndata is:\r\n%s\r\n",ret,buf);
|
|
if(0 > ret){
|
|
closesocket(p->sock);
|
|
p->conn = FALSE;
|
|
return -1;
|
|
}
|
|
if(Recv(p->sock,pRecv,500) > 0) {
|
|
printf("recv: %s\r\n",pRecv);
|
|
} else{
|
|
printf("error recv ");
|
|
return -1;
|
|
}
|
|
} |