siptransmitter.cxx

来自「一个SIP协议栈」· CXX 代码 · 共 107 行

CXX
107
字号
#include "SIPTransmitter.h"namespace msip{    //---------------------------------------------------------------------------------------    Transmitter::Transmitter()    : tr_IPAddress(0),      tr_TCPSocket(0),      tr_UDPSocket(0)    {    }    //---------------------------------------------------------------------------------------    Transmitter::~Transmitter()    {        if(tr_TCPSocket) delete tr_TCPSocket;        if(tr_UDPSocket) delete tr_UDPSocket;        if(tr_IPAddress) delete tr_IPAddress;    }    //---------------------------------------------------------------------------------------    bool     Transmitter::connect(SendVia via, const std::string & addr, int port)    {        if(tr_IPAddress)        {            // Transmitter has been already connected            return false;        }        tr_IPAddress = new mh323::IPAddress(addr.c_str());        if(port) tr_IPAddress->setPort(port);        if(via == viaUDP)        {            tr_UDPSocket = new mh323::UDPSocket;        }        if(via == viaTCP)        {            tr_TCPSocket = new mh323::TCPSocket;            tr_TCPSocket->connect(*tr_IPAddress);        }        return true;    }    //---------------------------------------------------------------------------------------    bool     Transmitter::close()    {        if(tr_IPAddress == 0)         {            // Transmitter has not been connected            return false;        }        if(tr_TCPSocket)        {            delete tr_TCPSocket;            tr_TCPSocket = 0;        }        if(tr_UDPSocket)        {            delete tr_UDPSocket;            tr_UDPSocket = 0;        }        if(tr_IPAddress)        {            delete tr_IPAddress;            tr_IPAddress = 0;        }    }    //---------------------------------------------------------------------------------------    bool    Transmitter::send(const std::mstring& msg)    {        if(tr_IPAddress == 0)         {            // Transmitter is not connected            return false;        }        if(tr_UDPSocket)        {            tr_UDPSocket->sendto(msg.c_str(), msg.length(), *tr_IPAddress);        }        if(tr_TCPSocket)        {            tr_TCPSocket->send(msg.c_str(), msg.length());        }        return true;    }        }

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?