在Qt中,当服务器端接收到客户端的消息时,可以通过 QTcpSocket
类获取发送消息的客户端的 IP 地址。然后你可以使用 QHostAddress
类中的 toIPv4Address()
方法来仅获取IPv4地址部分。
以下是一个示例代码:
void YourServerClass::onReadyRead()
{
QTcpSocket* clientSocket = qobject_cast<QTcpSocket*>(sender());
if (clientSocket)
{
QHostAddress clientAddress = clientSocket->peerAddress();
QString clientIP;
// 判断是否为IPv4地址
if (clientAddress.protocol() == QAbstractSocket::IPv4Protocol) {
quint32 ipv4Addr = clientAddress.toIPv4Address();
clientIP = QHostAddress(ipv4Addr).toString();
}
// 使用clientIP进行处理或记录
qDebug() << "Received message from client with IP: " << clientIP;
// 处理接收到的消息...
}
}
在上述代码中,我们首先判断客户端的地址是否为 IPv4 地址,如果是,则使用 toIPv4Address()
方法将其转换为 32 位无符号整数表示,并再次使用 QHostAddress
构造函数将其转换回 IPv4 地址字符串形式。
这样就可以获取发来消息的客户端的 IPv4 地址,并且不包含前缀 ‘ffff’。
内容由零声教学AI助手提供,问题来源于学员提问