14网络编程

主机信息查询

QT += network
#include    <QHostInfo>  
#include    <QNetworkInterface>
QList<QHostAddress> addList=host.addresses();//查找主机信息
aHost.protocol();//协议
QHostInfo::localHostName();//本地主机名
QHostInfo hostInfo=QHostInfo::fromName(hostName); //本机IP地址

QHostInfo::lookupHost(hostname,this,SLOT(lookedUpHostInfo(QHostInfo)));//异步方式查找主机ip

 QList<QNetworkInterface>    list=QNetworkInterface::allInterfaces();
QList<QNetworkAddressEntry> entryList=aInterface.addressEntries();

TCP通信

//Server
#include    <QtNetwork>//网络相关都包含
QTcpServer *tcpServer=new QTcpServer(this); //TCP服务器
QString IP=ui->comboIP->currentText();//IP地址
quint16 port=ui->spinPort->value();//端口
tcpServer->listen(addr,port);
QTcpSocket *tcpSocket=tcpServer->nextPendingConnection();//TCP通讯的Socket
//发送一行字符串,以换行符结束
QString  msg=ui->editMsg->text();
QByteArray  str=msg.toUtf8();
    str.append('\n');//添加一个换行符
    tcpSocket->write(str);

//读取缓冲区行文本
while(tcpSocket->canReadLine())
   ui->plainTextEdit->appendPlainText(+tcpSocket->readLine());
if (tcpServer->isListening()) //tcpServer正在监听
{
        tcpServer->close();//停止监听
}
//客户端断开连接时
    tcpSocket->deleteLater();
 tcpServer->close();;//停止网络监听
//Client
QTcpSocket* tcpClient=new QTcpSocket(this); //创建socket变量
QString     addr=ui->comboServer->currentText();
quint16     port=ui->spinPort->value();
tcpClient->connectToHost(addr,port);
tcpClient->disconnectFromHost();

UDP

#include    <QUdpSocket>
QUdpSocket  *udpSocket=new QUdpSocket(this);
udpSocket->bind(port)//绑定端口
    
//读取收到的数据报
    while(udpSocket->hasPendingDatagrams())
    {
        QByteArray   datagram;
        datagram.resize(udpSocket->pendingDatagramSize());
        QHostAddress    peerAddr;
        quint16 peerPort;
        udpSocket->readDatagram(datagram.data(),datagram.size(),&peerAddr,&peerPort);
        QString str=datagram.data();
    }

QString  msg=ui->editMsg->text();//发送的消息内容
    QByteArray  str=msg.toUtf8();
    udpSocket->writeDatagram(str,targetAddr,targetPort); //发出数据报 向指定的端口和IP

udpSocket->writeDatagram(str,QHostAddress::Broadcast,targetPort);//广播
udpSocket->abort();//断开连接和重置socket

组播

QUdpSocket  *udpSocket=new QUdpSocket(this);
QHostAddress    groupAddress=QHostAddress(IP);//组播地址
udpSocket>setSocketOption(QAbstractSocket::MulticastTtlOption,1);//Multicast路由层次,1表示只在同一局域网内
if (udpSocket->bind(QHostAddress::AnyIPv4, groupPort, QUdpSocket::ShareAddress))//先绑定端口
{
     udpSocket->joinMulticastGroup(groupAddress); //加入多播组
}
//退出组播
udpSocket->leaveMulticastGroup(groupAddress);//退出组播
udpSocket->abort(); //解除绑定

HTTP

#include    <QDesktopServices> //直接打开文件使用
#include <QtNetwork>

QUrl newUrl = QUrl::fromUserInput(urlSpec);//URL地址

QNetworkAccessManager networkManager;//网络管理
QNetworkReply *reply = networkManager.get(QNetworkRequest(newUrl)); //网络响应
reply->readAll();
reply->deleteLater(); 

ger;//网络管理
QNetworkReply *reply = networkManager.get(QNetworkRequest(newUrl)); //网络响应
reply->readAll();
reply->deleteLater();

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值