QT套接字(socket)

1.客户端

qt中关于网路的代码需要加上network

且包含头文件#include <QTcpSocket>

QTcpSocket *socket=new QTcpSocket;

qt中的ip包含在头文件#include <QHostAddress>

QString hostip=ui->lineIpEdit->text();
QString port=ui->linePortEdit->text();
socket->connectToHost(QHostAddress(hostip),port.toShort());

如果连接成功用信号与槽的方式显示连接成功

connect(socket,&QTcpSocket::connected,[this](){
    QMessageBox::information(this,"连接提示","连接成功");
})

连接断开

connect(socket,&QTcpSocket::disconnected,[this](){
    QMessageBox::warning(this,"连接提示","连接断开!");
})

2.服务器端

包含头文件#incldue <QTcpSocket>,#include <QTcpServer>

QTcpServer *server=new QTcpServer;
server->listen(QHostAddress::AnyIPv4,8000);//监听的地址和端口
connect(server,&QtcpServer::newConnection,this,&Widget::tcpSlot);

void Widget::tcpSlot()
{
    //建立新的连接
    QTcpSocket *socket=nextPendingConnection();
    socket->peerAddress();//返回值QHostAddress,客户端ip
    socket->peerPort();//返回客户端端口,uint16
    ui->ipLineEdit->setText(socket->peerAddress().to_String());
    ui->portLineEdit->setText(QString::number(socket->peerPort()));
}

3.socket发送数据

QByteArray arr;
arr.append(QString(....));
socket->write();//write的数据类型是QByteArray

服务器接收数据之后发出readyRead信号

connect(socket,&QTcpsocket::readyRead,this,&Widget::slot);

槽函数中如何获取信号发出者对象的指针

QTcpSocket *socket=(QTcpSocket *)sender();

服务器读取发送过来的数据

QString s(socket->readAll());

4.界面隐藏和关闭

ui->close();//用于关闭界面,对象也清除了相当于调用析构函数
ui->hide();//用于隐藏界面,对象还在

  • 6
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值