当前位置:编程学习 > wap >>

qt TcpSocket编程中奇怪的问题

最近在写一个tcp客户端向服务端发送数据的程序,在测试时每次发送的数据包都是相同的,但是服务器端接收的情况却不尽相同,在首次接收正确后要循环几次才能接收到正确的包,以下是服务端的调试输出信息:
listening... 
connected... 
recerving... 
"newdocument.txt" 

recerving... 
"蔀" 
30 
recerving... 
"" 

recerving... 
"newdocument.txt" 

recerving... 
"蔀" 
30 
recerving... 
"" 

recerving... 
"newdocument.txt" 


客户端发送的包信息是这样的:

"newdocument.txt" 
1036

"newdocument.txt" 
1036

"newdocument.txt" 
1036

"newdocument.txt" 
1036

"newdocument.txt" 
1036

"newdocument.txt" 
1036

"newdocument.txt" 
1036

求教,谁知道是怎么回事?我使用的是datastream in来处理接收信息的。 --------------------编程问答-------------------- 发送端代码:
void SendFile::sendMsg(PACKAGE pag)
{
    QByteArray block;
    QDataStream out(&block,QIODevice::WriteOnly);
    out.setVersion(QDataStream::Qt_4_3);
    outout(out,pag);
    out.device()->seek(0);
    cout<<sizeof(pag)<<endl;
    clientsocket.write(block);
}

接收端代码:
void receiveServer::acceptConnection()
{
    qDebug()<<"connected...";
    client = server.nextPendingConnection();

    connect(this->client,SIGNAL(readyRead()),this,SLOT(startRead()));

    this->client->waitForReadyRead();
    this->client->waitForBytesWritten();

    /*clientThread* thread = new clientThread(client);
    thread->start();*/
}

void receiveServer::startRead()
{
    qDebug()<<"recerving...";
    QDataStream in(this->client);
    in.setVersion(QDataStream::Qt_4_3);
    PACKAGE pag;
    inin(in,pag);
    checkpackage(pag);
} --------------------编程问答-------------------- 没有人吗?在线等! --------------------编程问答-------------------- 我也改的书上的例子,我的数据都是通过quint8类型再转换到字符串的,没出现什么问题
补充:移动开发 ,  Qt
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,