2013-11-20 2 views
0

텔넷 클라이언트를 사용하여 로컬 호스트에서 실행중인 서버에 연결할 수없는 이유는 무엇입니까?
windows-7을 사용하고 있습니다. & 제어판에서 텔넷 클라이언트가 켜져 있습니다.텔넷 클라이언트가 연결되지 않음 - QTCPserver에

어떻게 작동시키는 지 제안 하시겠습니까?

#define SERVER_PORT 5000 

TCP 서버는 tcpserver는 객체 생성됩니다 --- tcpserver를위한

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

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

} 

// 공통 슬롯 - 스레드

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

그러나 텔넷 클라이언트는 할 수없는 이유 기능에 ?

답변

1

5000 일을 = localhost를 & 포트에서 실행중인 서버에 연결, 당신은이 코드를 가지고있다 -

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

이것은 현재 스레드가 메시지를 처리하는 것을 중지합니다. 서버를 중지하려면 tcpserverobject 클래스에 신호를받을 때 QTcpServer에 대한 연결을 닫을 슬롯이 있어야합니다.

+0

실제로이 while 루프는 서버를 시작하는 스레드의 dowork() 함수 내에 있습니다. 그래서 말하자면 ...이 루프를 제거하면 .. 텔넷 클라이언트가 연결할 수 있습니다. 서버 ..? ... 내 주요 문제는 텔넷 클라이언트가 서버에 연결할 수 없다는 것입니다 ...? – Katoch

+0

이 시점에서 제안 하시겠습니까 ...? – Katoch

+1

작업 중 ... 루프를 제거했습니다. – Katoch