ICQServerSocket::ICQServerSocket(unsigned short minPort, unsigned short maxPort) { #ifdef HAVE_KEXTSOCK_H sock = new KExtendedSocket; connect(sock, SIGNAL(readyAccept()), this, SLOT(activated())); for (m_nPort = minPort; m_nPort <= maxPort; m_nPort++){ sock->reset(); sock->setBlockingMode(false); sock->setSocketFlags(KExtendedSocket::passiveSocket); sock->setPort(m_nPort); if (sock->listen() == 0) break; } if (m_nPort > maxPort){ delete sock; sock = NULL; return; } #else sn = NULL; sock = new QSocketDevice; for (m_nPort = minPort; m_nPort <= maxPort; m_nPort++){ if (sock->bind(QHostAddress(), m_nPort)) break; } if ((m_nPort > maxPort) || !sock->listen(50)){ delete sock; sock = NULL; return; } sn = new QSocketNotifier(sock->socket(), QSocketNotifier::Read, this); connect(sn, SIGNAL(activated(int)), this, SLOT(activated(int))); #endif }
bool DccTransferRecv::startListeningForSender() { // Set up server socket QString failedReason; if ( Preferences::dccSpecificSendPorts() ) m_serverSocket = DccCommon::createServerSocketAndListen( this, &failedReason, Preferences::dccSendPortsFirst(), Preferences::dccSendPortsLast() ); else m_serverSocket = DccCommon::createServerSocketAndListen( this, &failedReason ); if ( !m_serverSocket ) { failed( failedReason ); return false; } connect( m_serverSocket, SIGNAL( readyAccept() ), this, SLOT( slotServerSocketReadyAccept() ) ); connect( m_serverSocket, SIGNAL( gotError( int ) ), this, SLOT( slotServerSocketGotError( int ) ) ); return true; }