Salut,
J'essaie depuis quelques jours de me pencher sur les connexions réseau en TCP.
J'aimerais l'avis de développeurs afin de savoir si le code ci-dessous vous parait correct. Le but étant de tester la connexion (s'assurer qu'une adresse est valide sur le réseau) avant d'entreprendre quoique ce soit.
J'utilise ofxNetwork sur oF 0.7.4 mais j'essaie de palier le problème de freeze de l'application quand je demande un tcpClient.setup(IP, PORT) sur une adresse qui n'existe pas.
De même j'ai essayé de faire comme certains le préconisent un system("ping adresse") mais j'ai le même problème.
Du coup j'ai fouillé dans le code de l'addon ofxNetwork et suis tombé sur la classe oxfTCPManager et une de ses méthodes : CheckHost(IP).
J'avoue que cela est un peu de la bidouille et de la débrouille. J'aimerais donc avoir un avis éclairé.
Mon code :
void testApp::testConnection() { string msgRx; bool connected = false; if(!connected) { string ipAddr = "192.168.5.225"; pjManager.Create(); if (!pjManager.CheckHost((char *)ipAddr.c_str())) { cout << "Host doesn't exist" << endl; } else { bool connected = pjClient.setup("192.168.5.225", 4352); if(pjClient.isConnected()) { cout << "connection established: " + ipAddr + "on port 4352" << endl; while (msgRx.length() < 8) { msgRx = pjClient.receiveRaw(); if(msgRx.length() > 6) { cout<< msgRx << endl; } } cout << "sending command: %1POWR ?" << endl; string command = "%1POWR ?\r"; pjClient.sendRaw(command); msgRx = ""; for(int i = 0; i<200000000 ; i++){} // Empty loop for pause while (msgRx.length() < 8) { msgRx = pjClient.receiveRaw(); cout<< msgRx << endl; } } else { cout << "Problem connecting to " + ipAddr + " on port 4352" << endl; } } } pjClient.close(); }
Merci à vous
Dernière modification par Marty (2013-05-19 02:21:36)
Hors ligne
Pages: 1