标题:QT TCP Server Multi Thread Client Socket Dontwork
作者:stuchang
日期:2020-02-21 14:33
内容:
一个简单的测试越搞越复杂,新ServerClass 重写 QTCPSever::incomingconnection, 使用QThreadpool 创建新线程for Client,run内setSocketDescriptor(handle),现象是,能成功关联获取QTCPSocket ,但是状态是死的,一直connected, Read Wirte 也不能用。
帖部分代码,初来乍到,请不吝赐教
MainClass Constructor :
if(MainWindow::getServer()->listen(QHostAddress::Any,4399))//(server->listen(QHostAddress::Any,4399))
{
qWarning("Server Listening on 4399!");
}
void MultiThreadTcpServer::incomingConnection(int handle)
{
if(0==handle) return;
ClientThread * pClientThr=new ClientThread();
pClientThr->handle=handle;
pClientThr->setAutoDelete(true);
QThreadPool::globalInstance()->start(pClientThr);
qWarning("Creat new thread!");
}
void ClientThread::run()
{
QTcpSocket Skt;
QByteArray get;
bool newframe=false;
if(!Skt.setSocketDescriptor(handle,QAbstractSocket::ConnectedState))
qFatal("Cant SetDescriptor!");
qWarning("New Client%s-%d.",Skt.peerAddress().toString().toLatin1().data(),Skt.peerPort());
QFile log(Skt.peerAddress().toString()+".log");
if(!log.exists())
log.setFileName(Skt.peerAddress().toString()+".log");
if(!log.open(QFile::Truncate|QFile::ReadWrite))
qCritical("Cant Create Log file!");
while(t ..
#1 [liulin188 02-21 14:56]
incomingconnection进来后,创建线程处理新的socket
我一直用的这个模型,没有问题,网上也有帖子
#2 [来就是玩的 12-10 17:32]
这是服务器端的,有客户端的么?