Example #1
0
int SocketUDP::read(void* data, int item_size, int item_count)
{
    if (this->sock == SOCK_NULL)
        return -1;

    sockaddr_storage addr;
    memset(&addr, 0x00, sizeof(sockaddr_storage));
    socklen_t addrlen = sizeof(addr);

    int r = (int)::recvfrom(this->sock, (char*)data, item_size*item_count, 0, (sockaddr*)&addr, 
                            &addrlen);

    // Update remote address
    if (r)  {
        if (addr.ss_family == AF_INET)  {
            this->remoteAddr = SocketAddr(((sockaddr_in*)&addr)->sin_addr.s_addr,
                                          ntohs(((sockaddr_in*)&addr)->sin_port));
        }   else if (addr.ss_family == AF_INET6)    {
            this->remoteAddr = SocketAddr(INET6_ADDR(((sockaddr_in6*)&addr)->sin6_addr),
                                          ntohs(((sockaddr_in6*)&addr)->sin6_port));
        }
    }

    return r/item_size;
}
Example #2
0
	Bool HawkLogServer::Init(const AString& sSvrAddr, const HawkDBConn& sConn, Int32 iCacheSize, Int32 iCacheTime)
	{
		m_iCacheTime = iCacheTime;
		HawkAssert(iCacheSize > 0);
		if(!m_sSocket.Create(AF_INET,SOCK_DGRAM,IPPROTO_UDP)) 
		{
			HawkPrint("LogServer Init Socket Error.");
			return false;
		}

		m_sSocket.SetNoDelay(true);
		m_sSocket.SetBlocking(false);

		if(!m_sSocket.Bind(SocketAddr(sSvrAddr)))
		{
			HawkPrint("LogServer Bind Socket Error.");
			return false;
		}

		m_pLogDB = P_DBManager->OpenDatabase("LogDB", sConn);
		if (!m_pLogDB)
		{
			HawkPrint("LogServer Open LogDB Error.");
			return false;
		}

		if (!m_pLogCache)
			m_pLogCache = new HawkOctets(iCacheSize);

		return true;
	}
Example #3
0
	Bool HawkLogServer::Init(const AString& sSvrAddr, const AString& sLogFile, Int32 iCacheSize, Int32 iCacheTime)
	{
		m_iCacheTime = iCacheTime;
		HawkAssert(iCacheSize > 0);
		if(!m_sSocket.Create(AF_INET,SOCK_DGRAM,IPPROTO_UDP)) 
		{
			HawkPrint("LogServer Init Socket Error.");
			return false;
		}

		m_sSocket.SetNoDelay(true);
		m_sSocket.SetBlocking(false);

		if(!m_sSocket.Bind(SocketAddr(sSvrAddr)))
		{
			HawkPrint("LogServer Bind Socket Error.");
			return false;
		}

		m_pLogFile = new HawkDiskFile;
		if (!m_pLogFile->Open(sLogFile, HawkFile::OPEN_APPEND))
		{
			HawkPrint("LogServer Open LogFile Error.");
			return false;
		}

		if (!m_pLogCache)
			m_pLogCache = new HawkOctets(iCacheSize);
		
		return true;
	}
/* class Request */
Request::Request(const std::string& host, int port, const std::string& batch_file, int id){
    this->addr = SocketAddr(host, port);
    this->batch_file = batch_file;
    this->id = id;
    is_server_connect = false;
    is_batch_file_open = false;
}
	Bool HawkProfiler::Start(const AString& sAddr)
	{
		if (!m_bRunning)
		{
			if (sAddr.size())
				m_sAddr = sAddr;

			GetProcessorNumber();
			GetTotalMem();
			GetCpuUsage();
			GetMemUsage();

			if(!m_sSocket.Create(AF_INET,SOCK_DGRAM,IPPROTO_UDP)) 
			{
				HawkPrint("Profiler Init Socket Error.");
				return false;
			}

			m_sSocket.SetNoDelay(true);
			m_sSocket.SetBlocking(false);

			if(!m_sSocket.Bind(SocketAddr(m_sAddr)))
			{
				HawkPrint("Profiler Bind Socket Error.");
				return false;
			}

			m_bRunning = true;
			m_pThread  = new HawkThread(hawk_ProfilerRoutine);
			m_pThread->Start(this);

			return true;
		}		
		return false;
	}
Example #6
0
SocketTCP SocketTCP::accept()
{
    SocketTCP r;
    sockaddr_in addr;
    socklen_t addrlen = sizeof(addr);
    r.sock = ::accept(this->sock, (sockaddr*)&addr, &addrlen);

    // Save Peer address
    if (r.isOpen())
        r.peerAddr = SocketAddr(ntohl(addr.sin_addr.s_addr), ntohs(addr.sin_port));

    return r;
}