2013-11-20 3 views
0

Почему я не могу подключиться к серверу, работающему на моем localhost, используя telnet-клиент?
Я использую windows-7 & Клиент telnet включен в панели управления.telnet клиент не подключается - к QTCPserver

Пожалуйста, предложите, как заставить его работать?

#define SERVER_PORT 5000 

Tcp сервер создается в объекте TCPServer: ---

tcpserverobject::tcpserverobject(QObject *parent) : 
    QObject(parent), tcpServer(0) 
{ 
    tcpServer = new QTcpServer; 

    connect(tcpServer, SIGNAL(newConnection()), this, SLOT(on_newConnection())); 

} 

// Общий слот для TCPServer - нить

void tcpserverobject::dowork() 
{ 
    if (!tcpServer->listen(QHostAddress::LocalHost, SERVER_PORT)) { 

     qDebug() << "\n returning from server listning error .. !!! "; 

     return; 
    } 

    qDebug() << "\n server listning"; 


    //while(1) 
    while(!m_bQuit) 
    { 
    } 

} 

Сервер новый код подключения: ---

void tcpserverobject::on_newConnection() 
{ 
    QByteArray block; 

    block.append(" \n Hello from server .. !!!") ; 

    QTcpSocket *clientConnection = tcpServer->nextPendingConnection(); 
    connect(clientConnection, SIGNAL(disconnected()), 
       clientConnection, SLOT(deleteLater())); 

    // Create new thread for this .. client request ..!! 
    qDebug() << "\n New connection request ..!!!"; 
    qDebug() << "\n New client from:" << clientConnection->peerAddress().toString(); 

    clientConnection->write(block); 
    clientConnection->flush(); 

    clientConnection->disconnectFromHost(); 
    qDebug() << "\n New connection request closed ..!!!"; 
} 

Теперь я ввожу c ommand телнет: ----

C:\Users\Admin> telnet 

Welcome to Microsoft Telnet Client 

Escape Character is 'CTRL+]' 

Microsoft Telnet> open localhost 5000 
Connecting To localhost... 

Я могу сделать мой сервер идти в режиме прослушивания, а следующее заявление распечатывается: -

qDebug() << "\n server listning"; 

Но почему телнет клиент не в состоянии подключиться к серверу, работающему в LOCALHOST & PORT = 5000 ?

ответ

1

в функции работают, у вас есть этот код: -

//while(1) 
while(!m_bQuit) 
{ 
} 

Это остановит текущий поток от обработки сообщений. Если вы хотите остановить сервер, введите слот в классе tcpserverobject, который закроет соединение с QTcpServer, когда он получит сигнал.

+0

Фактически это while цикл внутри dowork() функция потока, который запускает сервер .... так что вы хотите сказать, что ... если я удалю этот цикл while, то telnet-клиент сможет подключиться к сервер ..? ... моя главная проблема - клиент telnet, неспособный подключиться к серверу ...? – Katoch

+0

, пожалуйста, предложите по этому вопросу ...? – Katoch

+1

его рабочий ... просто удалил, что в то время как цикл .. – Katoch

Смежные вопросы