Tengo una aplicación que ejecuta una herramienta que requiere conexión a la red. Ahora mi objetivo es verificar si el usuario tiene una conexión de red, si no tiene una, puedo mostrar un error sin proceder más adelante. Si lo hizo, puede seguir trabajando con mi aplicación. Entonces mi necesidad básica es verificar si el usuario tiene una conexión de red o no. ¿Cómo puedo lograr a través de Qt 4.4? Estoy usando Windows XP.Verificación de la conexión de red utilizando Qt 4.4
Respuesta
Este código te ayudará.
#include <QtCore/QCoreApplication>
#include <QtNetwork/QNetworkInterface>
bool isConnectedToNetwork()
{
QList<QNetworkInterface> ifaces = QNetworkInterface::allInterfaces();
bool result = false;
for (int i = 0; i < ifaces.count(); i++)
{
QNetworkInterface iface = ifaces.at(i);
if (iface.flags().testFlag(QNetworkInterface::IsUp)
&& !iface.flags().testFlag(QNetworkInterface::IsLoopBack))
{
#ifdef DEBUG
// details of connection
qDebug() << "name:" << iface.name() << endl
<< "ip addresses:" << endl
<< "mac:" << iface.hardwareAddress() << endl;
#endif
// this loop is important
for (int j=0; j<iface.addressEntries().count(); j++)
{
#ifdef DEBUG
qDebug() << iface.addressEntries().at(j).ip().toString()
<< "/" << iface.addressEntries().at(j).netmask().toString() << endl;
#endif
// we have an interface that is up, and has an ip address
// therefore the link is present
// we will only enable this check on first positive,
// all later results are incorrect
if (result == false)
result = true;
}
}
}
return result;
}
int main(int argc, char *argv[])
{
QCoreApplication a(argc, argv);
QTextStream output(stdout);
output << endl << "Connection Status: " << ((isConnectedToNetwork())?"Connected":"Disconnected") << endl;
return a.exec();
}
Supongo que por "conexión de red" quiere decir "conexión a Internet", es decir, no le importa LAN o algunas redes ad-hoc entre su computadora de escritorio y su dispositivo móvil.
La manera más fácil es simplemente conectarse al servicio de Internet que su aplicación necesita y dejar que el SO maneje la solicitud de la red. Si obtiene la respuesta, hay una conexión, si la solicitud expira, no hay conexión.
Puede verificar el estado de la interfaz de red a través de QNetworkInterface :: flags(), pero esto no le proporciona la información sobre la red a la que está conectada: la interfaz puede estar activa pero solo conectada a LAN sin internet acceso.
con Qt 4.7, puede utilizar QNetworkConfiguration para comprobar las conexiones e incluso a partir de ellos, por ejemplo, en Symbian.
- 1. Deshabilitar la conexión de red
- 2. QT - casilla de verificación desmarque
- 3. Configuración Orden de tabulación para QTableView en Qt 4.4
- 4. Comprobar conexión de red androide
- 5. Administración de la conexión de red inalámbrica en C#
- 6. socat conexión después de fallo de la red
- 7. Qt QTableVer cómo tener una casilla de verificación solo columna
- 8. IOException: El adaptador de red no pudo establecer la conexión
- 9. Cómo deshabilitar/habilitar la conexión de red en C#
- 10. Dónde está el acondicionador de enlace de red Prefpane en OSX Mountain Lion y Xcode 4.4
- 11. pitón: urllib2 utilizando diferentes interfaz de red
- 12. Qt conectar dos señales juntas utilizando QueuedConnection
- 13. ¿Alguna idea para ejecutar señales Qt/slots en la red?
- 14. Qt casilla de verificación/herramienta con iconos personalizados/distintos de verificación/desmarcado
- 15. EC2 Red de error: Tiempo de espera de conexión
- 16. JSON en Qt utilizando QVariantMap
- 17. Copia de archivos a través de una conexión intermitente Red
- 18. nodejs vuelven a conectar conexión a la red
- 19. ¿Se conecta a la red una conexión a localhost?
- 20. Conexión a SQL Server con qt
- 21. Servidor de cliente bidireccional Qt utilizando QTcpSocket y QTcpServer
- 22. Conexión de cliente a servidor utilizando Socket.io
- 23. Acceso a la propiedad de Conexión utilizando DbContext
- 24. C# Aplicación de Windows: ¿muchos hilos utilizando la misma conexión?
- 25. Conexión SVN + SSH que genera el error 210002, conexión de red cerrada inesperadamente
- 26. ¿Cómo verifico si tengo una conexión de red?
- 27. Se intentó una operación en una conexión de red inexistente
- 28. ¿Cómo puedo simular una conexión de red lenta
- 29. El uso de EF 4.4 y no 5.0 con VS2012
- 30. La mejor herramienta para monitorear el ancho de banda de la conexión de red
Me gusta Escribí en mi respuesta: QNetworkInterface solo le dirá que la conexión a alguna red está activa. Puede ser LAN sin acceso a Internet, wlan ad-hoc que conecta su computadora portátil con su móvil, red de máquina virtual, etc. No creo que esa sea la información que el OP está buscando. – chalup
sí ... y eso es suficiente ... hizo el truco ... – liaK
gracias por su código. pero si alguien tiene una máquina virtual instalada en su computadora (como yo), este código fallará. Trataré de arreglarlo si tengo tiempo. –