Qt中利用TCP实现客户端与服务器端的数据传输

Qt中利用TCP实现客户端与服务器端的数据传输

标签: QTtcp服务器
3182人阅读 评论(0) 收藏 举报
本文章已收录于:

最近想用Qt做一个简单的聊天室,用到了TCP传输,在此整理一下有关TCP传输的东西。(只是简单的实现数据传送,对于一些出错情况没有考虑,适于新手学习,本人也是个菜鸟)

在Qt中有QTcpsockey和QTcpserver两个类,QTcpserver主要是用来在服务器端监听客户端的连接请求,QTcpsocket用来传输数据。

服务器的建立:在.h文件中添加  

    QTcpSocket *m_tcpsocket;
    QTcpServer *m_tcpserver;
.cpp中添加:
    m_tcpserver = new QTcpServer(this);
    m_tcpsocket = new QTcpSocket(this);
    m_tcpserver->listen(QHostAddress::Any,6666);//监听的端口号
    connect(m_tcpserver,SIGNAL(newConnection()),
            this,SLOT(newConnect()));
void Widget::newConnect()
{
    m_tcpsocket = m_tcpserver->nextPendingConnection();//设置监听
    connect(m_tcpsocket,SIGNAL(readyRead()),
            this,SLOT(readMessage())); //服务器接收客户端的消息
    connect(m_tcpsocket,SIGNAL(disconnected()),
                m_tcpsocket,SLOT(deleteLater()));
}

服务器端发送数据:
void Widget::readMessage()
{
    QDataStream in(m_tcpsocket);
    in.setVersion (QDataStream::Qt_5_4);
    in >> message;
    qDebug() << "ser message" << message;
    ui->textBrowser->setText(tr("reveived client message: '%1'").arg(message));
}
服务器端接受数据:
void Widget::sendMessage()
{
    QString string = ui->lineEdit->text();
    QByteArray message;
    QDataStream out(&message,QIODevice::WriteOnly);
    out.setVersion(QDataStream::Qt_5_4);
    out<<string;
    m_tcpsocket->write(message);
}

客户端的建立
在.h中:
   QTcpSocket *m_tcpsocket;
在.cpp中
void Widget::tcpServerConnect()
{
    m_tcpsocket = new QTcpSocket(this);
    m_tcpsocket->abort();
    m_tcpsocket->connectToHost(QHostAddress::LocalHost,6666);//设置客户端的端口号
    connect(m_tcpsocket,SIGNAL(readyRead()),
            this,SLOT(readMessage()));//用于接受数据
//    m_tcpsocket->connectToHost("localhost",6666);
}
发送数据:
void Widget::sendMessage()
{
     QString string = ui->lineEdit->text();
     QByteArray message;
     QDataStream out(&message,QIODevice::WriteOnly);
     out.setVersion(QDataStream::Qt_5_4);
     out<<string;
     m_tcpsocket->write(message);
}
接收数据
void Widget::readMessage()
{
    QDataStream in(m_tcpsocket);
    in.setVersion(QDataStream::Qt_5_4);
    QString greeting;
    in >> greeting;
    ui->lineEdit_2->setText(tr("received server message '%1'").arg(greeting));
}
希望大家共同学习,有错误积极指出。
完整代码下载地址:http://download.csdn.net/download/qq_33425353/9573296

1
1
 
 
  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值