首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >14网络编程

14网络编程

作者头像
步步为营DotNet
发布2026-06-17 09:12:39
发布2026-06-17 09:12:39
650
举报

主机信息查询

代码语言:javascript
复制
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通信

代码语言:javascript
复制
//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();;//停止网络监听
代码语言:javascript
复制
//Client
QTcpSocket* tcpClient=new QTcpSocket(this); //创建socket变量
QString     addr=ui->comboServer->currentText();
quint16     port=ui->spinPort->value();
tcpClient->connectToHost(addr,port);
tcpClient->disconnectFromHost();

UDP

代码语言:javascript
复制
#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

组播

代码语言:javascript
复制
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

代码语言:javascript
复制
#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();

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2026-06-16,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 主机信息查询
  • TCP通信
  • UDP
    • 组播
  • HTTP
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档