繁体   English   中英

将数据从服务器发送到客户端

[英]Sending data from a server to a client

我有两个项目,一个用于服务器,另一个用于客户端。 在客户端,当我想发送数据时,我创建一个QTcpSocket成员变量,然后使用write()方法发送数据。

在服务器上,我收到了信息,但我想将信息发送回客户端。 具体来说,我正在尝试验证用户,所以我将他们在客户端登录的用户名和密码发送到服务器,我想检查数据对照保存在服务器上的数据库,然后发送信息返回给客户以验证信息是否正确。

我的问题是我不知道如何从服务器向客户端发送信息。 在服务器上,我有两个成员变量, QTcpServer server; QTcpSocket* client;

我查看了有关QTcpServer文档,据我所知,它没有与write()相当,而QTcpSocket*是当前连接到服务器的客户端。

我正在考虑在服务器上创建一个QTcpSocket变量,并以与向服务器发送信息相同的方式向客户端发送信息,但这似乎是错误的,因为客户端的行为就像服务器一样,在客户端上有一个QTcpServer变量。

我还能怎么做呢?

您应该使用QTcpServer接受传入的TCP连接。 首先调用listen()等待连接:

QTcpServer* tcpServer = new QTcpServer();

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

if( !tcpServer->listen( QHostAddress::Any, port_no ) )
    qDebug() << "Couldn't listen to port";

每次有新连接时,都会发出此信号newConnection 因此,我们将信号连接到插槽以使服务器QTcpSocket对象与客户端通信:

void MyClass::onNewConnection()
{
    serverSocket = tcpServer->nextPendingConnection();

    connect(serverSocket, SIGNAL(readyRead()), this, SLOT(readSocket()));
}

您现在可以使用write方法将数据发送到客户端套接字:

serverSocket->write("Hello!");

并在新数据到达时读取数据:

void MyClass::readSocket()
{
    QByteArray data = serverSocket->readAll();
    ...
}

暂无
暂无

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

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