QT的TCP收发协议

使用QT的网络编程需要在.pro文件里面添加:

QT +=network
  • client

client负责的是向server发送数据,而server负责侦听端口和向端口发送数据。构建一个client对象,主要包括以下几个方面:

    1. 创建套接字并实例化:

QTcpSocket *client;
this->client=new QTcpSocket;

    2.将这个套接字链接至服务器相应端口

        this->client->connectToHost("192.168.10.220",7002);
        if(!this->client->waitForConnected(10000000))
        {
            std::cout<<"cannot connect the server!"<<std::endl;
            return;
        }

   3.使用write函数向服务器写数据

 this->client->write(bytedata,12);

 4.与服务器断开

        this->client->disconnectFromHost();
        this->client->waitForDisconnected();

当socket的缓冲区有数据到来时,会有一个readready的信号,所以可以建立一个槽函数,来协助读取数据:

connect(m_tcpsocket,SIGNAL(readyRead()),this,SLOT(readmessage()),Qt::DirectConnection);//readyread为Qsignal成员函数
//发送对象  发送对象的信号 接收对象 槽函数(接收对象的成员)


//读取缓冲区用这个:
    QByteArray datagram;
    datagram=m_tcpsocket->readAll();
    FixedData+=datagram;//QByteArray可以添加
  • server

服务器除了需要使用QtcpSocket类之外,还需要使用QtcpServer类

    1 创建server对象

  m_tcpserver=new QTcpServer;
  m_tcpsocket=new QTcpSocket;

  m_tcpserver->listen(QHostAddress::Any,Port);//创建对象,侦听端口 
    connect(m_tcpserver,SIGNAL(newConnection()),this,SLOT(newConnect()),Qt::DirectConnection);//创建接收端口被访问信号的槽函数--

  2 构建接收数据的socket

void TCPServer::newConnect()
{
    m_tcpsocket = m_tcpserver->nextPendingConnection();
   // QMessageBox::about(this,"notice","new connect");
     connect(m_tcpsocket,SIGNAL(readyRead()),this,SLOT(readmessage()),Qt::DirectConnection);

    //connect(m_tcpsocket,SIGNAL(disconnected()),this,SLOT(deleteLater()),Qt::DirectConnection);
}

大致的样子就是这样,类文件我上传到资源里面了,可以来这里下载:

https://pan.baidu.com/s/1yZuaoN8mjKCm5V14EYAsNQ

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

syvge

你的鼓励将是我创作的最大动力

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

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

打赏作者

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

抵扣说明:

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

余额充值