16,173
社区成员
发帖
与我相关
我的任务
分享
void ForwardServer::incomingConnection(int socketDescriptor)
{
ForwardLink *link = new ForwardLink(socketDescriptor);
connect(this, SIGNAL(serverSendLogMSG(QByteArray)), link, SLOT(receiveAndSendLog(QByteArray)));
QThread *thread = new QThread(this);
link->moveToThread(thread);
connect(link, SIGNAL(destroyed()), thread, SLOT(quit()));
connect(thread, SIGNAL(finished()), thread, SLOT(deleteLater()));
connect(thread, SIGNAL(finished()), link, SLOT(deleteLater()));
thread->start();
}
这个是我根据Fortune Server Example这个例子写的一个多线程tcp server,
自己只要实现ForwardLink 就行,接收数据什么的都在ForwardLink 这个类里面完成,
每当一个新的连接要进来,就会new 一个ForwardLink,然后塞到一个线程里面。
server要做的事情就是管理好这些ForwardLink 和线程就可以了。
具体的事情就让ForwardLink来做,这样维护也很方便。
至于版本的问题,估计是你看的接收到的数据的处理吧,设置版本是为了让Qt可以正确处理不用的版本生成的二进制,而你这个数据是自己写的,就不用这么的麻烦,只需要处理好粘包就可以。