线程,readyread 信号 槽
-
你好,我创建了一个线程 用来socket tcp发送和接收数据 在线程的run中 我先 client = new QTcpSocket(); 然后连接 服务端,可以连的上的,这样客户端和服务端是可以保证连接的上的。然后connect(client, SIGNAL(readyRead()),SLOT(myReadData())); 发送数据给服务端,服务端接收数据返回数据给客户端。客户端显示能够接收到数据,但是 服务端没办法接收到数据,经过查证 好像都没有进入 上面的接收数据的信号对应的槽里面去。请问,是我使用的方式不对?还是有其他原因影响到接收数据?但是我在主线程中做了这个信号和槽是可以接收到数据的。
-
哦 不要意思;
void myEncodeSendThread::run()
{
char sendbuff[4096];
client = new QTcpSocket();
myClientConnect();
connect(client, SIGNAL(readyRead()),SLOT(myReadServer()));
qDebug()<<"This is timerAAAA!!";
return;
while(stopped){
myClientTiffSend(sendbuff);
}
}
这个是线程里面的run的处理,我是想在线程内发送和接收数据,在run里面做了一个while 发送数据 用connect readyRead接收数据;void myEncodeSendThread::myReadServer()
{
qDebug()<<"This is Read!!";
}
这个是信号槽的处理 但是运行的时候 没有触发这个槽,信号与槽的连接的值是true的,说明 信号和槽处理关系建立成功了,我用whirlshark也抓包过 是有数据发送回来的 ,但是就是出发不了信号。。。 -
@Flotisable
好像是可以了 改成
char sendbuff[4096];
client = new QTcpSocket();
myClientConnect();
connect(client, SIGNAL(readyRead()),SLOT(myReadServer()));
qDebug()<<"This is timerAAAA!!";
exec();
就可以接收数据了 ,但是后面的while()中的发送数据 就没办法处理。。。。 -
@Flotisable
意思就是 我自己在建立自己的signal和slot 然后给一个启动的signal 让线程的exec 里面自己去执行这个轮询的过程么?