QHostInfo
主要是自身名称,ip信息
函数 | 作用 |
---|---|
QList addresses() const | 得到地址 |
QString errorString() const | 错误原因 |
QString hostName() const | 主机名称 |
QString localDomainName() | 域 |
QString localHostName() | 名 |
int lookupHost(const QString &name, QObject *receiver, const char *member) | 还回 |
NetWorkTest::NetWorkTest(QWidget *parent)
: QWidget(parent)
{
qDebug()<<QHostInfo::localHostName();
QHostInfo local_info=QHostInfo::fromName("www.baidu.com");
auto lookup=[&local_info]{
qDebug()<<local_info.hostName();
foreach (QHostAddress address, local_info.addresses()) {
if(address.protocol()==QAbstractSocket::IPv4Protocol){
qDebug()<<"IPv4 adress is:"<<address.toString();
}
if(address.protocol()==QAbstractSocket::IPv6Protocol){
qDebug()<<"IPv6 address is:"<<address.toString();
}
}
};
lookup();
exit(0);
}
/*
"ubuntu"
"www.baidu.com"
IPv4 adress is: "14.215.177.38"
IPv4 adress is: "14.215.177.39"
*/
QHostAddress
IP地址
函数 | 作用 |
---|---|
QAbstractSocket::NetworkLayerProtocol protocol() const | 返回协议 |
void setAddress(quint32 ) | 设置IP地址 |
quint32 toIPv4Address() const | 得到地址 |
quint32 toIPv4Address(bool *ok) const | |
QString toString() const |
QTextStream cout(stdout);
NetWorkTest::NetWorkTest(QWidget *parent)
: QWidget(parent)
{
auto getIp=[]{
foreach (QHostAddress address, QNetworkInterface::allAddresses()) {
cout<<endl;
if(address.protocol()==QAbstractSocket::IPv4Protocol){
qDebug()<<address.toString();
}
if(address.protocol()==QAbstractSocket::IPv6Protocol){
Q_IPV6ADDR IPv6=address.toIPv6Address();
for(int i=0;i<16;i+=2)
cout<<hex<<IPv6[i]<<IPv6[i+1]<<":";
}
cout<<endl;
}
};
getIp();
exit(0);
}
/*
"127.0.0.1"
00:00:00:00:00:00:00:01:
"192.168.252.128"
fe80:00:00:00:1d73:3a4:8c23:91d4:
*/
QTextStream cout(stdout);
NetWorkTest::NetWorkTest(QWidget *parent)
: QWidget(parent)
{
auto getIp=[]{
QList<QNetworkInterface> list = QNetworkInterface::allInterfaces();
foreach (QNetworkInterface netInterface, list) {
QList<QNetworkAddressEntry> entryList = netInterface.addressEntries();
foreach(QNetworkAddressEntry entry, entryList) { // 遍历每一个IP地址
qDebug() << "********************";
qDebug() << "IP Address:" << entry.ip().toString(); // IP地址
qDebug() << "Netmask:" << entry.netmask().toString(); // 子网掩码
qDebug() << "Broadcast:" << entry.broadcast().toString(); // 广播地址
qDebug() << "Prefix Length:" << entry.prefixLength(); // 前缀长度
}
}
};
getIp();
exit(0);
}
/*
********************
IP Address: "127.0.0.1"
Netmask: "255.0.0.0"
Broadcast: "127.255.255.255"
Prefix Length: 8
********************
IP Address: "::1"
Netmask: "ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff"
Broadcast: ""
Prefix Length: 128
********************
IP Address: "192.168.252.128"
Netmask: "255.255.255.0"
Broadcast: "192.168.252.255"
Prefix Length: 24
********************
IP Address: "fe80::1d73:3a4:8c23:91d4%ens33"
Netmask: "ffff:ffff:ffff:ffff::"
Broadcast: ""
Prefix Length: 64
*/
QUrlQuery
NetWorkTest::NetWorkTest(QWidget *parent)
: QWidget(parent)
{
// 基本 URL
QString baseUrl = "http://www.zhihu.com/search";
QUrl url(baseUrl);
// key-value 对
QUrlQuery query;
query.addQueryItem("type", "content");
query.addQueryItem("q", "Qt");
url.setQuery(query);
qDebug() << url;
}
/*
* QUrl("http://www.zhihu.com/search?type=content&q=Qt")
*/
//bool exist = query.hasQueryItem("q");
// true
QHttp
**QHttpPart **
函数 | 作用 |
---|---|
void setHeader(QNetworkRequest::KnownHeaders header, const QVariant &value) | |
void setRawHeader(const QByteArray &headerName, const QByteArray &headerValue) | |
void setBody(const QByteArray &body) |
QHttpPart textPart;
textPart.setHeader(QNetworkRequest::ContentTypeHeader, QVariant("text/plain"));
textPart.setHeader(QNetworkRequest::ContentDispositionHeader, QVariant("form-data; name=\"text\""));
textPart.setBody("here goes the body");
QHttpPart imagePart;
imagePart.setHeader(QNetworkRequest::ContentTypeHeader, QVariant("image/jpeg"));
imagePart.setHeader(QNetworkRequest::ContentDispositionHeader, QVariant("form-data; name=\"image\""));
imagePart.setRawHeader("Content-ID", "[email protected]"); // add any headers you like via setRawHeader()
QFile *file = new QFile("image.jpg");
file->open(QIODevice::ReadOnly);
imagePart.setBodyDevice(file);
QHttpMultiPart *multiPart = new QHttpMultiPart(QHttpMultiPart::FormDataType);
QHttpPart textPart;
textPart.setHeader(QNetworkRequest::ContentDispositionHeader, QVariant("form-data; name=\"text\""));
textPart.setBody("my text");
QHttpPart imagePart;
imagePart.setHeader(QNetworkRequest::ContentTypeHeader, QVariant("image/jpeg"));
imagePart.setHeader(QNetworkRequest::ContentDispositionHeader, QVariant("form-data; name=\"image\""));
QFile *file = new QFile("image.jpg");
file->open(QIODevice::ReadOnly);
imagePart.setBodyDevice(file);
file->setParent(multiPart); // we cannot delete the file now, so delete it with the multiPart
multiPart->append(textPart);
multiPart->append(imagePart);
QUrl url("http://my.server.tld");
QNetworkRequest request(url);
QNetworkAccessManager manager;
QNetworkReply *reply = manager.post(request, multiPart);
multiPart->setParent(reply); // delete the multiPart with the reply
// here connect signals etc.
QTextStream cout(stdout);
NetWorkTest::NetWorkTest(QWidget *parent)
: QWidget(parent)
{
QNetworkAccessManager *manager = new QNetworkAccessManager(this);
// URL
QString baseUrl = "http://www.baidu.com";
// 构造请求
QNetworkRequest request;
request.setUrl(QUrl(baseUrl));
// 发送请求
QNetworkReply *pReplay = manager->get(request);
// 开启一个局部的事件循环,等待响应结束,退出
QEventLoop eventLoop;
QObject::connect(manager, &QNetworkAccessManager::finished, &eventLoop, &QEventLoop::quit);
eventLoop.exec();
// 获取响应信息
QByteArray bytes = pReplay->readAll();
//写入文件
QFile file("/home/zz/Desktop/my.html");
QTextStream outfile(&file);
if(!file.open(QIODevice::WriteOnly))return;
outfile<<bytes;
file.close();
}