2012-07-18 4 views
1

J'utilise QTcpSocket pour obtenir des informations du serveur.QTcpSocket reconnexion way

De mon côté, il est nécessaire de se connecter et d'attendre les octets du serveur, et les obtenir.

Je crée QTcpSocket. Connectez-le à l'hôte. Commencez à obtenir des données, c'est bon. Mais quand, par exemple, je sors le câble Ethernet, il n'y a pas de différence avec l'objet socket.

J'ai essayé de connecter des signaux tels que QAbstractSocket :: error() et QAbstractSocket :: stateChange(), mais aucun ne me donne quoi que ce soit au moment de la déconnexion.

Ma tâche consiste à attendre quelques secondes et essayer de me reconnecter, jusqu'à ce que je reçoive une nouvelle connexion.

Un conseil?

+5

La connexion TCP n'est pas perdue simplement parce que le câble est déconnecté. Déconnecter le câble et le rebrancher en une minute (si je me souviens bien) ne devrait apparaître que comme une latence à votre programme, et non comme une déconnexion. –

+0

Votre protocole prend-il en charge le ping-pong? –

Répondre

0

J'ai rencontré le même problème lors de la programmation du projet client et serveur.

J'ai utilisé SIGNAL -> disconnected() qui est immédiatement émis par le client lorsqu'il est déconnecté. Connect (client, SIGNAL (déconnecté()), this, SLOT (DisconnectMessage()));

Veuillez essayer svp.

+0

Comme mentionné dans les commentaires de la question, le socket ne signale pas la connexion car il réessaie toujours d'envoyer/recevoir des paquets. Vous devez attendre un certain temps jusqu'à ce qu'il abandonne et signale une déconnexion. –

+0

J'ai fait quelques tests, alors que je vois mon QTcpSocket désconfigurer après 1-2 min après le débranchement d'Ethernet et quand je le rebranche, après un certain temps, il se connecte automatiquement. Cela me satisfait pleinement. – mmmaaak