• 3896阅读
  • 0回复

关于访问服务器的客户端改进的问题(急!!!谢谢!!!) [复制链接]

上一主题 下一主题
离线irei
 
只看楼主 倒序阅读 楼主  发表于: 2010-11-22
#include "tcpclient.h"
//#include "ui_tcpclient.h"


TcpClient::TcpClient(QWidget *parent) :QDialog(parent),ui(new Ui::TcpClient)
{
    ui->setupUi(this);
    connect(ui->pushButton,SIGNAL(pressed()),this,SLOT(connectToServer()));
    connect(ui->pushButton_2,SIGNAL(pressed()),this,SLOT(closeConnection()));
    connect(&tcpSocket,SIGNAL(connected()),this,SLOT(sendRequest()));
    connect(&tcpSocket,SIGNAL(disconnected()),this,SLOT(connectionClosedByServer()));
    connect(&tcpSocket,SIGNAL(readyRead()),this,SLOT(update()));
    connect(&tcpSocket,SIGNAL(error(QAbstractSocket::SocketError)),this,SLOT(error()));
    nextBlockSize=0;
}

TcpClient::~TcpClient()
{
    delete ui;
}

void TcpClient::connectToServer(){
    tcpSocket.connectToHost("202.117.10.54",1234);
    ui->pushButton->setEnabled(false);
    ui->pushButton_2->setEnabled(true);
    }

void TcpClient::sendRequest(){
    QString in="123";
    QByteArray block;
    QDataStream out(&block,QIODevice::WriteOnly);
    out.setVersion(QDataStream::Qt_4_7);
    out<<quint16(0)<<in;
    out.device()->seek(0);
    out<<quint16(block.size()-sizeof(quint16));
    tcpSocket.write(block);
}

void TcpClient::update(){
    QDataStream in(&tcpSocket);
    QString meg;
    in.setVersion(QDataStream::Qt_4_7);
    forever {
           if (nextBlockSize == 0) {
               if (tcpSocket.bytesAvailable() < sizeof(quint16))
                   break;
               in >> nextBlockSize;
           }
           if (nextBlockSize == 0xFFFF) {
               closeConnection();
               break;
           }
           if (tcpSocket.bytesAvailable() < nextBlockSize)
               break;
           in>>meg;
           ui->textEdit->clear();
            ui->textEdit->append(meg);
           nextBlockSize = 0;
       }
}

void TcpClient::closeConnection(){
    tcpSocket.close();
    ui->pushButton->setEnabled(true);
    ui->pushButton_2->setEnabled(false);
}
void TcpClient::error(){

    closeConnection();
}


这是一键实现一个服务器返回值的客户端程序 小弟想把它改成一键返回50个服务器返回值 但试了很多次都没成功
希望高手指点 最好把大概代码写点 小弟qt编程实在不怎么样 谢谢大家啦











快速回复
限100 字节
 
上一个 下一个