• 8327阅读
  • 5回复

tcp通信的多线程问题 [复制链接]

上一主题 下一主题
离线266lwf
 
只看楼主 正序阅读 楼主  发表于: 2009-04-23
— 本帖被 XChinux 从 General Qt Programming 移动到本区(2011-01-02) —
我在写一个tcp通信的程序,服务器端用的是QTcpSever::incomingConnection(),每来一个客户端就开一个线程,服务器端可往客户端发消息,但客户端往服务器端发消息的时候显示如下错误,请问是怎么回事?
  QObject: Cannot create children for a parent that is in a different thread.
   (Parent is QTcpSocket(0xd18868), parent's thread is QThread(0xb59378), current thread is serverThread(0xd18858)
   Object::connect: No such signal QTcpSocket::readReady() in .\serverthread.cpp:17
离线mllsdnu

只看该作者 5楼 发表于: 2009-04-23
在线程的run()函数中创建socket。
给你个例子
class CThread : public QThread
{
.....
.....
.....
private:
QTcpSocket *m_socket;
}

void CThread::run()
{
        m_socket = new QTcpSocket;
       m_socket.connectToHost(.....); /// 连到服务器
       conncet(m_socket,SIGNAL(readyRead()),this,SLOT(readData()));///
       exec();
       delete m_socket;
}
socket 一定要在run函数创建和初始化,当然删除也要在run里
离线266lwf
只看该作者 4楼 发表于: 2009-04-23
楼上说的是Threaded Fortune Server的例子吗?这个例子中服务器端只向客户端发消息,并没接收来自客户端的消息啊
离线hehui

只看该作者 3楼 发表于: 2009-04-23
Demo中有例子~
离线266lwf
只看该作者 2楼 发表于: 2009-04-23
因为是课程作业,要求用多线程实现,难道说在Qt中读写TcpSocket不能在一个线程内现实?
离线XChinux

只看该作者 1楼 发表于: 2009-04-23
没必要每一个连接一个线程的吧?
二笔 openSUSE Vim N9 BB10 XChinux@163.com 网易博客 腾讯微博
承接C++/Qt、Qt UI界面、PHP及预算报销系统开发业务
快速回复
限100 字节
 
上一个 下一个