jrtplib3.11.1 TCP发送和接收视频流

参照tcptest.cpp

TCP客户端:       

       int   nClient = socket(AF_INET, SOCK_STREAM, 0);
        sockaddr_in   serverAddr;
        memset(&serverAddr, 0, sizeof(sockaddr_in));
        serverAddr.sin_family = AF_INET;
        serverAddr.sin_addr.s_addr = inet_addr("127.0.0.1");
        serverAddr.sin_port = htons(10000);
        int  nRet = connect(nClient, (sockaddr*)&serverAddr, sizeof(serverAddr));
       
        int   status;
        int  nPackSize = 45678;
       RTPSessionParams   sessparams;
       sessparams.SetProbationType(RTPSources::NoProbation); 
       sessparams.SetOwnTimestampUnit(90000.0 / 25.0);
       sessparams.SetMaximumPacketSize(nPackSize+64); 

        m_pTrans = new RTPTCPTransmitter(NULL);//主要用成员变量,用于jrtplib库赋值
        status = m_pTrans->Init(true);
        status = m_pTrans->Create(65535, NULL);
        status = m_RTPSession.Create(sessparams, m_pTrans);
        checkerror(status);

        status = m_RTPSession.AddDestination(RTPTCPAddress(nClient));
        checkerror(status);

TCP服务器:

    int   nListener = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);
	if (nListener == INVALID_SOCKET)
	{
		return  -1;
	}

	sockaddr_in   serverAddr;
	memset(&serverAddr, 0, sizeof(sockaddr_in));
	serverAddr.sin_family = AF_INET;
	serverAddr.sin_addr.S_un.S_addr = INADDR_ANY;
	serverAddr.sin_port = htons(10000);
	int  nRet = bind(nListener, (sockaddr*)&serverAddr, sizeof(serverAddr));
	if (nRet == SOCKET_ERROR)
	{
		return  -1;
	}
	if (listen(nListener, 1) == SOCKET_ERROR)
	{
		return  -1;
	}



		sockaddr_in   clientAddr;
		int  nLen = sizeof(sockaddr_in);
		int   nServer = -1;
		while (true)
		{
			nServer = accept(nListener, (sockaddr*)&clientAddr, &nLen);
			if (nServer == INVALID_SOCKET)
			{
				continue;
			}
			else
			{
				break;
			}
		}

		int  nPackSize = 45678;
		RTPSessionParams   sessparams;
		sessparams.SetProbationType(RTPSources::NoProbation);
		sessparams.SetOwnTimestampUnit(90000.0 / 25.0);
		sessparams.SetMaximumPacketSize(nPackSize + 64);

		pTransparams = new RTPTCPTransmitter(NULL);
		//RTPTCPTransmitter  transparams(NULL);
		status = pTransparams->Init(true);
		status = pTransparams->Create(65535, NULL);

		status = m_RTPTCPSession.Create(sessparams, pTransparams);
		if (status >= 0)
		{
			m_RTPTCPSession.AddDestination(RTPTCPAddress(nServer));
		}

 

你可能感兴趣的:(流媒体开发,GB28181,流媒体开发)