#include "rtptcpaddress.h"
#include "rtpsession.h"
#include "rtpsessionparams.h"
#include "rtptcptransmitter.h"
#include "rtpipv4address.h"
#include "rtptimeutilities.h"
#include "rtppacket.h"
#include "rtpabortdescriptors.h"
using namespace jrtplib;
void main()
{
#ifdef WIN32
WSADATA dat;
WSAStartup(MAKEWORD(2,2),&dat);
#endif
RTPSession session;
RTPAbortDescriptors m_descriptors;
RTPSessionParams sessionparams;
sessionparams.SetAcceptOwnPackets(true);
sessionparams.SetOwnTimestampUnit(1.0/10.0);
m_descriptors.Init();
RTPTCPTransmissionParams transparams;
transparams.SetCreatedAbortDescriptors(&m_descriptors);
int status = session.Create(sessionparams,&transparams,RTPTransmitter::TCPProto);
if (status < 0)
{
std::cerr << "[session.Create]" << QString::fromStdString(RTPGetErrorString(status));
return;
}
//初始化socket
SOCKET sockSrv = socket(AF_INET, SOCK_STREAM, 0);
SOCKADDR_IN addrSrv;
addrSrv.sin_addr.S_un.S_addr = inet_addr("127.0.0.1");
addrSrv.sin_family = AF_INET;
addrSrv.sin_port = htons(9000);
//连接服务器
connect( sockSrv, (SOCKADDR*)&addrSrv, sizeof(SOCKADDR));
RTPTCPAddress addr(sockSrv);
status = session.AddDestination(addr);
if (status < 0)
{
std::cerr << "session.AddDestination" << QString::fromStdString(RTPGetErrorString(status));
return;
}
session.SetDefaultPayloadType(96);
session.SetDefaultMark(false);
session.SetDefaultTimestampIncrement(160);
//发送数据
session.SendPacket(str.data(),str.length());
RTPTime delay(0.020);
session.BYEDestroy(delay,"Client End",9);
}
JRTPLIB中如果要使用TCP方式通信,则需要先建立socket,再将socket句柄传递给 RTPTCPAddress