谢谢,我也有这个想法。
如果这样做的话,我是这样写的:
void CTcpServer::receive()
{
TCPThread * client = m_clientList.last();
QDataStream in(client);
in.setVersion(QDataStream::Qt_4_5);
//......
}
void CTcpServer::incomingConnection(int socketDescriptor)
{
TCPThread * thread = new TCPThread(socketDescriptor,this);
m_clientList.append(thread);
connect(thread,SIGNAL(readyRead()),this,SLOT(receive()));
connect(thread,SIGNAL(error(QAbstractSocket::SocketError)),this,SLOT(errorMsg()));
thread->start();
}
===============
如果这样可行的话,又有一个问题:
多线程tcp,每个客户端传来的数据大小都不一样,服务端应该怎么处理从而保证数据完整?单线程时可以用m_bytesReceived,m_totalbytes来保证接收信息完整,而在多线程是把这些数据放在TcpThread客户端里吗?