Annonce

>>> Bienvenue sur codelab! >>> Première visite ? >>> quelques mots sur codelab //// une carte des membres//// (apéros) codelab

17 mai 2019 : accident de la base de données : plus d'infos

#1 2013-05-07 23:58:06 Connexion TCP bloquante ?

Marty
membre
Date d'inscription: 2012-04-27
Messages: 143

Connexion TCP bloquante ?



Bonsoir,

J'essaie d'initialiser une connexion TCP à une adresse IP qui n'existe pas pour tester ma boucle. Celle ci est censée arrêter le processus en renvoyant une "erreur de connection" quand la connexion n'est pas dispo, sinon on entre dans le traitement en envoyant des messages sur le réseau.

Si l'adresse IP est atteignable, il y a bien une connexion et le message envoyé est bien recu.

Si l'adresse n'existe pas, l'appli freeze et je suis obligé de tuer l'appli !

J'utilise la librairie ofxTCPClient sur oF 0.7.4

mon code...

déclaration :

ofxTCPClient netClient;}

puis :

if(!netClient.setup(IPAddress, PJLINK_PORT)){return "CONNECTION ERROR !";}

Comment faites vous pour vous connecter à une adresse ?

Merci

Dernière modification par Marty (2013-05-08 00:02:03)

Hors ligne

 

#2 2013-05-08 20:14:58 Re : Connexion TCP bloquante ?

Marty
membre
Date d'inscription: 2012-04-27
Messages: 143

Re: Connexion TCP bloquante ?



re-bonjour,

je me suis rendu compte que l'application freeze tant que la tentative de connexion est en cours. La main est redonnée au bout d'un certain temps après un TIMEOUT.

J'ai en attendant réfléchi à une autre solution, à savoir envoyer un ping pour tester l'adresse et si j'ai une négative j'affiche un message d'erreur... or cette solution est bloquante également !

D'après ce que j'ai compris il faudrait mettre cette action en "thread". Si j'ai bien compris le principe, ça veut dire lancer la tentative de connexion et redonner la main jusqu'à l'obtention d'une réponse.

De la j'ai deux questions :

- Un thread se met il en place facilement ? j'ai cru comprendre que cela était un peu délicat et surtout j'ai regardé quelques exemples avec ofxThread mais j'avoue que cela ne me parle pas vraiment ! pouvez vous m'expliquer ?

- La librairie ofxTCPClient n'est elle pas déjà "threadée" ? cela me semble étonnant.

Je suis preneur de toute suggestion pour mettre en place une connexion réseau fonctionnelle.

Merci à vous

Hors ligne

 

#3 2013-05-14 21:49:45 Re : Connexion TCP bloquante ?

caracteriel
membre
Date d'inscription: 2011-07-03
Messages: 130

Re: Connexion TCP bloquante ?



J'ai pas de réponse à ta question mais je me dis que tu saurais (au vue de ta question) peut-être répondre à une question plus simple.
Sais-tu comment envoyer une simple requête http ?

Je dois coder une application merdique sur windows que je découvre et ça me semble plus relou que sur linux où ça se fait très simplement.

Hors ligne

 

#4 2013-05-14 22:17:57 Re : Connexion TCP bloquante ?

geb
vicieux petit troller pervers
Lieu: Rennes
Date d'inscription: 2011-06-16
Messages: 78
Site web

Re: Connexion TCP bloquante ?



Marty a écrit:

De la j'ai deux questions :

- Un thread se met il en place facilement ? j'ai cru comprendre que cela était un peu délicat et surtout j'ai regardé quelques exemples avec ofxThread mais j'avoue que cela ne me parle pas vraiment ! pouvez vous m'expliquer ?

- La librairie ofxTCPClient n'est elle pas déjà "threadée" ? cela me semble étonnant.

Je ne peux pas t'aider pour la première partie, je ne connais pas openframework smile

Mais dans l'absolu, oui cela se met en place facilement, après il faut faire gaf quand tu partages des données entre deux threads.

Et non, je ne pense pas qu' ofxTCPClient soit threadé, justement pour ce problème: si ofxTCPClient tourne en tache de fond et que tu essais de lire des données sur une connexion en attente/cassée/whatever d'après toi il se passe quoi ? smile


Ceci n'est pas un flood.

Hors ligne

 

#5 2013-05-15 10:04:06 Re : Connexion TCP bloquante ?

Marty
membre
Date d'inscription: 2012-04-27
Messages: 143

Re: Connexion TCP bloquante ?



Salut Geb,

Merci pour ta réponse. Logique comme explication. Dans tous les cas ce que je ne comprend pas c'est pourquoi cette tentative de connexion est bloquante ?

pour initier une connexion il y a une méthode

bool ofxTCPClient::setup(string Adresse_IP, int PORT)

Je déclare donc un objet

ofxTCPclient tcpClient;

mais quand je l'utilise

bool connected = tcpClient.setup(IP_Addr, portNum);

ça fonctionne si l'adresse ip et port sont ok, autrement dit si il arrive à se connecter et connected = true.
si l'adresse est mauvaise ou n'existe pas, l'appli freeze !!! pourquoi diable ne redonne-t-il pas la main et renvoie tout simplement "false" ? c'est pourtant sa fonction ?

Je veux bien mettre tout ça dans un thread, mais le problème sera plus ou moins le même, autrement dit : le programme me redonnerai bien la main, mais moi j'attendrai toujours ma réponse, à savoir true ou false...

ou alors je fais une boulette de mon côté...

Dernière modification par Marty (2013-05-15 10:08:11)

Hors ligne

 

fil rss de cette discussion : rss

Pied de page des forums

Powered by FluxBB

codelab, graphisme & code : emoc / 2008-2020