45 lines
1.7 KiB
C++
45 lines
1.7 KiB
C++
|
#include "getipserver.h"
|
|||
|
#include <QTcpServer>
|
|||
|
#include <mainwindow.h>
|
|||
|
#include <QtNetwork>
|
|||
|
#include <QHostAddress>
|
|||
|
#include <QMessageBox>
|
|||
|
|
|||
|
GetIPServer::GetIPServer(QLabel *localIp)
|
|||
|
{
|
|||
|
lock = false;
|
|||
|
tcp = new QTcpServer();
|
|||
|
QHostAddress ip("0.0.0.0");
|
|||
|
tcp->listen(QHostAddress::Any, 30201);
|
|||
|
// 获取 IP 地址
|
|||
|
QString IpAddress;
|
|||
|
foreach (QHostAddress address, QNetworkInterface::allAddresses())
|
|||
|
{
|
|||
|
if(address.protocol() == QAbstractSocket::IPv4Protocol && address.toString() != "127.0.0.1" && address.toString() != "192.168.250.1"){
|
|||
|
IpAddress = address.toString();
|
|||
|
}
|
|||
|
}
|
|||
|
qDebug() << "服务器IP:" << IpAddress;
|
|||
|
qDebug() << "服务器端口:" << tcp->serverPort();
|
|||
|
localIp->setText("访问:http://" + IpAddress + ":" + QString::number(tcp->serverPort()) + " 连接");
|
|||
|
connect(tcp, &QTcpServer::newConnection, this, [this](){
|
|||
|
|
|||
|
tcpSocket = tcp->nextPendingConnection();
|
|||
|
QString ipAddress = QHostAddress(tcpSocket->peerAddress().toIPv4Address()).toString();
|
|||
|
qDebug() << ipAddress;
|
|||
|
qDebug() << tcpSocket->peerPort();
|
|||
|
tcpSocket->write("HTTP/1.1 200 OK"\
|
|||
|
"Content-Type: text/html;charset=utf-8"\
|
|||
|
"\n\n");
|
|||
|
tcpSocket->write(QString("<html><body><p>IP Address: " + ipAddress + "</p><p>Get Port: " + QString::number(tcpSocket->peerPort()) + "</p></body></html>").toLocal8Bit());
|
|||
|
tcpSocket->close();
|
|||
|
if(lock){
|
|||
|
return;
|
|||
|
}
|
|||
|
lock = true;
|
|||
|
QMessageBox::question(NULL, "提示", "IP地址为“" + ipAddress + "”想要连接,是否连接?");
|
|||
|
lock = false;
|
|||
|
});
|
|||
|
qDebug() << "a";
|
|||
|
}
|