我刚刚创建了自己的QTcpServer实现并重载了incomingConnection
函数。
void Server::incomingConnection(int handle) //Server inherits from QTcpServer
{
qDebug()<<"Server::incomingConnection"<<handle;
Thread *thread = new Thread(handle,this);
connect(thread,SIGNAL(finished()),this,SLOT(deleteLater()));
thread->start();
}
在线程中我做了以下事情:
void Thread::run()
{
qDebug() << m_socketDescriptor << "Starting Thread";
m_socket = new QTcpSocket();
if(!m_socket->setSocketDescriptor(m_socketDescriptor))
return;
connect(m_socket,SIGNAL(readyRead()),this,SLOT(readyRead()));
connect(m_socket,SIGNAL(disconnected()),this,SLOT(disconnected()));
qDebug() << m_socketDescriptor << "Client connected";
exec();
}
现在我有一个多线程服务器。
但是如何才能访问连接的客户端并通过它们发送数据。一个gui?
提前谢谢!
此致
答案 0 :(得分:1)
您需要使用某些“QIODevice”函数(例如write
或<<
)将数据发送到QTCPSocket另一端的客户端。
因此,如果您正在向浏览器客户端提供网页,那么您首先要听取(或使用读取命令)到他们的request,然后根据您使用的协议发送相应的response
所以我首先在您的计算机上的端口80上设置此服务器,然后打开浏览器http://localhost
。然后使用qDebug打印出来自浏览器的请求。
void Thread::readyRead()
{
qDebug() << Q_FUNC_INFO;
qDebug() << m_socket.readAll();
}
完成工作后,决定如何解析请求,然后决定如何回复,或者要提供哪些数据。
另外,请务必查看See also QTCPSocket中的TCP示例。
希望有所帮助。