繁体   English   中英

多线程Qt服务器未回显客户端发送的数据

[英]Multithreaded Qt server not echoing data sent by client

我有一台可以处理多个线程的服务器。 服务器启动并进行侦听,但是在传入连接挂起时,它在回声方面遇到问题。

我正在使用telnet打开套接字并将数据发送到服务器。 但是,服务器仅显示其正在侦听,而不会回显我通过telnet输入的任何数据,也不表示存在传入连接。 我关闭了专用网络的Windows防火墙,但仍然没有。

还尝试查看服务器错误字符串是否有什么有用的说法,但仅仅是一个空字符串。

这对我来说完全是个谜,如果有人有什么需要说明的东西,将不胜感激。 线程和服务器的代码如下。

server.cpp

#include "myserver.h"

MyServer::MyServer(QObject *parent) :
    QTcpServer(parent)
{

}


void MyServer::StartServer()
{
    if(!this->listen(QHostAddress::Any,1234))
    {
        qDebug() << "Could not start server";
    }
    else
    {
        qDebug() << "Listening...";
    }
}

void MyServer::incomingConnection(int socketDescriptor)
{
    qDebug() << socketDescriptor << " Connecting...";
    MyThread *thread = new MyThread(socketDescriptor,this);
    connect(thread, SIGNAL(finished()),thread, SLOT(deleteLater()));
    thread->start();
}

thread.cpp

#include "mythread.h"

MyThread::MyThread(int ID, QObject *parent) :
    QThread(parent)
{            this->socketDescriptor = ID;
}

void MyThread::run()
{
    qDebug() << socket->errorString();
    //thread starts here
    qDebug() << socketDescriptor << " Starting thread";
        socket = new QTcpSocket();
    if(!socket->setSocketDescriptor(this->socketDescriptor))
    {
        emit error(socket->error());
        return;
    }

    connect(socket,SIGNAL(readyRead()),this,SLOT(readyRead()),Qt::DirectConnection);
                        connect(socket,SIGNAL(disconnected()),this,SLOT(disconnected()),Qt::DirectConnection);

    qDebug() << socketDescriptor << " Client Connected";

    exec();
}

void MyThread::readyRead()
{
    QByteArray Data = socket->readAll();

     qDebug() << socketDescriptor << " Data in: " << Data;

     socket->write(Data);
}

void MyThread::disconnected()
{
    qDebug() << socketDescriptor << " Disconnected";

    socket->deleteLater();
    exit(0);
}

您正在使用哪个版本的Qt? 在Qt 5中,函数传入连接的参数类型为qintptr而不是int 看一下以下链接:

入网连接-Qt 5

Qt 5-多线程服务器教程

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM