Exemple #1
0
//======================================================================================
TcpSocket* TcpSocket::Accept() {
	struct sockaddr_in sa;
	socklen_t len = sizeof(sa);
	Log.i(SOCK_TAG, "TcpSocket::Accept m_iSocket=%u", m_iSocket);
	int ret = accept(m_iSocket, (struct sockaddr*) &sa, &len);
	if (-1 == ret){
		Log.e(SOCK_TAG, "TcpSocket::Accept -1!");
		return NULL;
	}
	if (0 == ret) {
		Log.e(SOCK_TAG, "TcpSocket::Accept 0!");
		return NULL;
	}

	TcpSocket *pNew = new TcpSocket(m_pSelector);
	pNew->m_iSocket = ret;
	//pNew->m_ip = ntohl(sa.sin_addr.s_addr);
	//pNew->m_iPort = ntohs(sa.sin_port);
	pNew->m_ip = sa.sin_addr.s_addr;
	pNew->m_iPort = sa.sin_port;
	pNew->m_bConnected = true;
	pNew->m_iLastRecvTime = SelectorEPoll::getInstance().m_iHaoMiao;
	pNew->setTimeout(m_iTimeout);
	pNew->SetNBlock();
	Log.i(SOCK_TAG, "TcpSocket accept %s:%u", ip2str(pNew->m_ip), pNew->m_iPort);
	return pNew;
}
Exemple #2
0
void Worker::newSocket(qintptr socket)
{
    //qDebug() << m_name << " is handling a new request; thread id" << thread()->currentThreadId();

    TcpSocket* s = new TcpSocket(this);
    s->m_id = static_cast<unsigned int>(rand());
    connect(s, SIGNAL(readyRead()), this, SLOT(readClient()));
    connect(s, SIGNAL(disconnected()), this, SLOT(discardClient()));
    s->setSocketDescriptor(socket);
    s->setTimeout(1000*60*2);
#ifndef NO_LOG
    sLog() << m_name << " receive a new request from ip:" << s->peerAddress().toString();
#endif
}
Exemple #3
0
TcpSocket* SocketHandler::createTcpListener(uint32_t uiIP, uint16_t& iPort,
					SocketHandler *handler, uint32_t timeout, const char* dbgname)
{
	TcpSocket* listenRes = new TcpSocket(&SelectorEPoll::getInstance(), dbgname);
	if(listenRes->Listen(uiIP, iPort, true) == false)
	{
		log(Error, "ListenManager tcp port %u listen failed", iPort);
		return NULL;
	}
	listenRes->m_pHandler = handler;
	listenRes->setListenSockt(true);
	listenRes->setTimeout(timeout);
	//log(Debug, "Calling g_epoll.SetEvent");
	SelectorEPoll::getInstance().SetEvent(listenRes, 0, SEL_READ);
	return listenRes;
}