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; }
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; }
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; }
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; }