自己写了一个socket向Live555的RTSP发送消息,为什么没有回应?麻烦大家帮看下

longlong530 2013-06-13 01:28:57

#include "stdafx.h"
#include <winsock2.h>
#include <winbase.h>
#include <iostream>

#pragma comment(lib, "ws2_32.lib")

#define PORT 554

void main(void)
{
WORD wVersionRequested;
WSADATA wsaData;

int err;

wVersionRequested = MAKEWORD(2, 2);

err = WSAStartup(wVersionRequested, &wsaData);
if(err != 0)
{
return;
}

if(LOBYTE(wsaData.wVersion) != 2 || HIBYTE(wsaData.wVersion) != 2)
{
WSACleanup();
return;
}


SOCKET sock;
sock = socket(AF_INET, SOCK_STREAM, 0);
struct sockaddr_in server;

server.sin_family = AF_INET;
server.sin_port = htons(PORT);
server.sin_addr.S_un.S_addr = inet_addr("192.168.10.177");

int nConnect;

nConnect = connect(sock, (struct sockaddr FAR*)&server, sizeof(struct sockaddr_in));
if(nConnect == SOCKET_ERROR)
{
int erro = WSAGetLastError();

printf("connect fail !");
Sleep(3000);

closesocket(sock);
WSACleanup();
return;
}

char buffer2[1000] = "DESCRIBE rtsp://192.168.10.177/bipbop-gear1-all.ts RTSP/1.0"
"CSeq: 2"
"User-Agent: testRTSP (LIVE555 Streaming Media v2012.02.29)"
"Accept: application/sdp";

int nSend = 0;
nSend = send(sock, buffer2, sizeof(buffer2), 0);

if(nSend == SOCKET_ERROR)
{
printf("send fail !");
Sleep(3000);
return ;
}

printf("Send MSG success: %s",buffer2);

//Sleep(1000);

char buffer[1024];
int nAmount;

nAmount = recv(sock, buffer, sizeof(buffer), 0);
if(nAmount == SOCKET_ERROR)
{
closesocket(sock);
WSACleanup();
return ;
}
printf("Recv MSG success: %s",buffer);
//std::cout<<buffer<<std::endl;
Sleep(3000);

closesocket(sock);
WSACleanup();
}
...全文
294 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
格致竟成 2015-06-01
  • 打赏
  • 举报
回复
怎么个情况?
longlong530 2013-06-17
  • 打赏
  • 举报
回复
已经调通,谢谢,结贴!
longlong530 2013-06-15
  • 打赏
  • 举报
回复
引用 1 楼 wubian2008 的回复:
貌似应该先发OPTION请求才行。你可以看下live555服务器模块的源码,看了比较有概念。不过源码很复杂,需求不大的话,看个大概就好啦~
对的,最近我一直在看源码,主要关注RTSP server这块的东西,现在是想自己拼装一下RTSP的协议字段,通过socket发出去,加深下对协议的理解。
longlong530 2013-06-15
  • 打赏
  • 举报
回复
1. Live555的RTSP Client的例子也没发Option,直接发的DESCRIBE 2. 我Option也试了,也没有响应
xuehai_sc 2013-06-14
  • 打赏
  • 举报
回复
客户端发送请求顺序OPTIONS——>DESCRIBE——>SETUP——>PLAY——>TEARDOWN
wubian2008 2013-06-14
  • 打赏
  • 举报
回复
貌似应该先发OPTION请求才行。你可以看下live555服务器模块的源码,看了比较有概念。不过源码很复杂,需求不大的话,看个大概就好啦~

2,543

社区成员

发帖
与我相关
我的任务
社区描述
专题开发/技术/项目 多媒体/流媒体开发
社区管理员
  • 多媒体/流媒体开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧