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();//用于隐藏界面,对象还在