QT服务器与客户端的搭建

/*-------------------------------------------------------*/
//服务器的搭建:
const QString IP = "127.0.0.1";
QTcpServer *tcp_server;
QTcpSocket *cfd;


tcp_server = new QTcpServer(this);
if(! tcp_server->listen(QHostAddress::LocalHost, SERV_PORT))
{
    qDebug()<<tcp_server->errorString();
    close();
}


connect(tcp_server, SIGNAL(newConnection()), this, SLOT(newconnect())); //等待客户端的链接


/*--------------------------------------------------------*/
QDataStream in(cfd);


    in.setVersion(QDataStream::Qt_5_0);                 //加密传输
    if(blocksize == 0)
    {
        if(cfd->bytesAvailable() < (int)sizeof(quint16))
        {
            return;
        }
        in>>blocksize;
    }qDebug()<<"**9*";
    if(cfd->bytesAvailable() < blocksize)
    {
        return;
    }qDebug()<<"**10*";
    in>>message;                                        //将读到的存入message


    cfd->read((char*)&message,cfd->bytesAvailable());


/*---------------------------------------------------------------------------*/
//服务器发送给客户端
/*--------------------------------------------------------------*/
            message_recv.cmd = 101;
            QByteArray block;
            QDataStream out(&block, QIODevice::WriteOnly);
            out.setVersion(QDataStream::Qt_4_0);
            out<<(quint16)0;
            out<<message_recv;
            out.device()->seek(0);
            out<<(quint16)(block.size()-sizeof(quint16));
            cfd->write(block, block.length());
/*--------------------------------------------------------------*/








//客户端与服务器链接
/*---------------------------------------------------*/
    tcpsocket = new QTcpSocket(this);
    tcpsocket->abort();
    tcpsocket->connectToHost(IP, SERV_PORT);
/*---------------------------------------------------*/


//发送给服务器
/*---------------------------------------------------*/


    QByteArray block;
    QDataStream out(&block, QIODevice::WriteOnly);
    out.setVersion(QDataStream::Qt_4_0);
    out<<(quint16)0;
    out<<str;
    out.device()->seek(0);
    out<<(quint16)(block.size()-sizeof(quint16));
    tcpsocket->write(block, block.length());


    connect(tcpsocket, SIGNAL(readyRead()), this, SLOT(read_server()));     //接收服务器信息
/*----------------------------------------------------*/
//接收服务器的信息
QDataStream in(tcpsocket);


    in.setVersion(QDataStream::Qt_4_6);                 //加密传输
    if(blocksize == 0)
    {
        if(tcpsocket->bytesAvailable() < (int)sizeof(quint16))
        {
            return;
        }
        in>>blocksize;
    }
    if(tcpsocket->bytesAvailable() < blocksize)
    {
        return;
    }
    in>>message;                                        //将读到的存入message
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

生命如歌,代码如诗

听说,打赏我的人都找到了真爱!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值