J'ai un moteur de communication multitaches qui envoie et recoit des
donn=E9es. Chaque thread peut =E9tablir une connexion sur un serveur ftp
via un socket qui lui est propre. Mon pb est que n threads se
connectent sur le m=EAme serveur. Or quand l'un d' entre eux ferme sa
connexion, les autres peuvent =EAtre perturb=E9s, c'est =E0 dire qu'ils
perdent aussi leur connexion.
Comment faire ? puis-je cr=E9er un socket et r=E9cup=E9rer une connexion
existante ? si oui je pourrais la laisser ouverte . Mais l=E0 , si je ne
d=E9connecte pas je me retrouve avec plein de connexions.
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
Dominique Vaufreydaz
Bonjour,
J'ai un moteur de communication multitaches qui envoie et recoit des données. Chaque thread peut établir une connexion sur un serveur ftp via un socket qui lui est propre. Mon pb est que n threads se connectent sur le même serveur. Or quand l'un d' entre eux ferme sa connexion, les autres peuvent être perturbés, c'est à dire qu'ils perdent aussi leur connexion.
Eux... C'est bizarre ca. C'est codé comment ? J'ai deja ecrit un grabber web multithread et chacun vivait sa vie sans voir les autres...
Comment faire ? puis-je créer un socket et récupérer une connexion existante ? si oui je pourrais la laisser ouverte . Mais là , si je ne déconnecte pas je me retrouve avec plein de connexions.
Non, si tu veux que les histoires des uns emmerdent pas celle des autres, le plus prudent est de faire 1 connexion complete par thread. Plus propre, plus sur. Meme si en creusant le protocol FTP on doit pouvoir faire mieux.
Doms.
Bonjour,
J'ai un moteur de communication multitaches qui envoie et recoit des
données. Chaque thread peut établir une connexion sur un serveur ftp
via un socket qui lui est propre. Mon pb est que n threads se
connectent sur le même serveur. Or quand l'un d' entre eux ferme sa
connexion, les autres peuvent être perturbés, c'est à dire qu'ils
perdent aussi leur connexion.
Eux... C'est bizarre ca. C'est codé comment ? J'ai deja ecrit un
grabber web multithread et chacun vivait sa vie sans voir les autres...
Comment faire ? puis-je créer un socket et récupérer une connexion
existante ? si oui je pourrais la laisser ouverte . Mais là , si je ne
déconnecte pas je me retrouve avec plein de connexions.
Non, si tu veux que les histoires des uns emmerdent pas celle des autres,
le plus prudent est de faire 1 connexion complete par thread. Plus
propre, plus sur. Meme si en creusant le protocol FTP on doit pouvoir
faire mieux.
J'ai un moteur de communication multitaches qui envoie et recoit des données. Chaque thread peut établir une connexion sur un serveur ftp via un socket qui lui est propre. Mon pb est que n threads se connectent sur le même serveur. Or quand l'un d' entre eux ferme sa connexion, les autres peuvent être perturbés, c'est à dire qu'ils perdent aussi leur connexion.
Eux... C'est bizarre ca. C'est codé comment ? J'ai deja ecrit un grabber web multithread et chacun vivait sa vie sans voir les autres...
Comment faire ? puis-je créer un socket et récupérer une connexion existante ? si oui je pourrais la laisser ouverte . Mais là , si je ne déconnecte pas je me retrouve avec plein de connexions.
Non, si tu veux que les histoires des uns emmerdent pas celle des autres, le plus prudent est de faire 1 connexion complete par thread. Plus propre, plus sur. Meme si en creusant le protocol FTP on doit pouvoir faire mieux.
Doms.
Pendloup
Bonjour,
Dominique Vaufreydaz a écrit :
Eux... C'est bizarre ca. C'est codé comment ? J'ai deja ecrit un grabber web multithread et chacun vivait sa vie sans voir les autres. ..
A partir du moment où chaque thread crée son propre socket, je ne vois pas pourquoi la déconnexion d'un socket peut déconnecter les autres. Ce que j'ai constaté, c'est que quand ça se produite la fonction WSAGetLastError() appellée après recv() me retourne WSAEWOULDBLOCK . Plus aucune donnée n'arrive et rien ne me dit que je suis déconnecté. J'ai donc instauré un time-out, et je repasse par une phase de reconnexion. Mais ça ne me semble pas normale.
Non, si tu veux que les histoires des uns emmerdent pas celle des aut res, le plus prudent est de faire 1 connexion complete par thread. Plus propre, plus sur. Meme si en creusant le protocol FTP on doit pouvoir faire mieux.
Je suis d'accord. D'autant que j'ai testé avec 2 occurences d' une application que j'ai et qui se connectent sur le même serveur, et bien la déconnexion de l'une n'affecte pas l'autre. Voici la séquence que j'utilise pour me déconnecter :
send(m_socket,"Quitrn",6,0);
shutdown(m_socket, 2); closesocket(m_socket);
Est-ce que ça explique quelques chose ?
Bonjour,
Dominique Vaufreydaz a écrit :
Eux... C'est bizarre ca. C'est codé comment ? J'ai deja ecrit un
grabber web multithread et chacun vivait sa vie sans voir les autres. ..
A partir du moment où chaque thread crée son propre socket, je ne
vois pas pourquoi
la déconnexion d'un socket peut déconnecter les autres. Ce que j'ai
constaté, c'est que quand ça se produite la fonction
WSAGetLastError() appellée après recv() me retourne WSAEWOULDBLOCK .
Plus aucune donnée n'arrive et rien ne me dit que je suis
déconnecté. J'ai donc instauré un time-out, et je repasse par une
phase de reconnexion. Mais ça ne me semble pas normale.
Non, si tu veux que les histoires des uns emmerdent pas celle des aut res,
le plus prudent est de faire 1 connexion complete par thread. Plus
propre, plus sur. Meme si en creusant le protocol FTP on doit pouvoir
faire mieux.
Je suis d'accord. D'autant que j'ai testé avec 2 occurences d' une
application que j'ai et qui se connectent sur le même serveur, et bien
la déconnexion de l'une n'affecte pas l'autre. Voici la séquence que
j'utilise pour me déconnecter :
Eux... C'est bizarre ca. C'est codé comment ? J'ai deja ecrit un grabber web multithread et chacun vivait sa vie sans voir les autres. ..
A partir du moment où chaque thread crée son propre socket, je ne vois pas pourquoi la déconnexion d'un socket peut déconnecter les autres. Ce que j'ai constaté, c'est que quand ça se produite la fonction WSAGetLastError() appellée après recv() me retourne WSAEWOULDBLOCK . Plus aucune donnée n'arrive et rien ne me dit que je suis déconnecté. J'ai donc instauré un time-out, et je repasse par une phase de reconnexion. Mais ça ne me semble pas normale.
Non, si tu veux que les histoires des uns emmerdent pas celle des aut res, le plus prudent est de faire 1 connexion complete par thread. Plus propre, plus sur. Meme si en creusant le protocol FTP on doit pouvoir faire mieux.
Je suis d'accord. D'autant que j'ai testé avec 2 occurences d' une application que j'ai et qui se connectent sur le même serveur, et bien la déconnexion de l'une n'affecte pas l'autre. Voici la séquence que j'utilise pour me déconnecter :
send(m_socket,"Quitrn",6,0);
shutdown(m_socket, 2); closesocket(m_socket);
Est-ce que ça explique quelques chose ?
Dominique Vaufreydaz
Bonjour,
A partir du moment où chaque thread crée son propre socket, je ne vois pas pourquoi la déconnexion d'un socket peut déconnecter les autres. Ce que j'ai constaté, c'est que quand ça se produite la fonction WSAGetLastError() appellée après recv() me retourne WSAEWOULDBLOCK .
après un recv qui renvoit SOCKET_ERROR ? Si non, cette valeur n'indique rien...
Plus aucune donnée n'arrive et rien ne me dit que je suis déconnecté. J'ai donc instauré un time-out, et je repasse par une phase de reconnexion. Mais ça ne me semble pas normale. Est-ce que ça explique quelques chose ?
A mon avis, faut creuser le proto FTP. Y'a un truc que tu dois pas faire correctement qui lui fait fermer la connexion...
Doms.
Bonjour,
A partir du moment où chaque thread crée son propre socket, je ne
vois pas pourquoi
la déconnexion d'un socket peut déconnecter les autres. Ce que j'ai
constaté, c'est que quand ça se produite la fonction
WSAGetLastError() appellée après recv() me retourne WSAEWOULDBLOCK .
après un recv qui renvoit SOCKET_ERROR ? Si non, cette valeur
n'indique rien...
Plus aucune donnée n'arrive et rien ne me dit que je suis
déconnecté. J'ai donc instauré un time-out, et je repasse par une
phase de reconnexion. Mais ça ne me semble pas normale.
Est-ce que ça explique quelques chose ?
A mon avis, faut creuser le proto FTP. Y'a un truc que tu dois
pas faire correctement qui lui fait fermer la connexion...
A partir du moment où chaque thread crée son propre socket, je ne vois pas pourquoi la déconnexion d'un socket peut déconnecter les autres. Ce que j'ai constaté, c'est que quand ça se produite la fonction WSAGetLastError() appellée après recv() me retourne WSAEWOULDBLOCK .
après un recv qui renvoit SOCKET_ERROR ? Si non, cette valeur n'indique rien...
Plus aucune donnée n'arrive et rien ne me dit que je suis déconnecté. J'ai donc instauré un time-out, et je repasse par une phase de reconnexion. Mais ça ne me semble pas normale. Est-ce que ça explique quelques chose ?
A mon avis, faut creuser le proto FTP. Y'a un truc que tu dois pas faire correctement qui lui fait fermer la connexion...
Doms.
Pendloup
Bonjour ,
Dominique Vaufreydaz a écrit :
après un recv qui renvoit SOCKET_ERROR ? Si non, cette valeur n'indique rien...
Oui, et je n'ai plus rien qui arrive . Ce qui m'étonne, c'est que je boucle sur cet état, sans jamais avoir un autre message d'erreur, ce qui qui semble vouloir dire que je suis toujours connecté.
A mon avis, faut creuser le proto FTP. Y'a un truc que tu dois pas faire correctement qui lui fait fermer la connexion...
Bon je vais creuser , merci pour ton aide.
Cordialement,
Pendloup
Bonjour ,
Dominique Vaufreydaz a écrit :
après un recv qui renvoit SOCKET_ERROR ? Si non, cette valeur
n'indique rien...
Oui, et je n'ai plus rien qui arrive . Ce qui m'étonne, c'est que
je boucle sur cet état, sans jamais avoir un autre message d'erreur,
ce qui qui semble vouloir dire que je suis toujours connecté.
A mon avis, faut creuser le proto FTP. Y'a un truc que tu dois
pas faire correctement qui lui fait fermer la connexion...
après un recv qui renvoit SOCKET_ERROR ? Si non, cette valeur n'indique rien...
Oui, et je n'ai plus rien qui arrive . Ce qui m'étonne, c'est que je boucle sur cet état, sans jamais avoir un autre message d'erreur, ce qui qui semble vouloir dire que je suis toujours connecté.
A mon avis, faut creuser le proto FTP. Y'a un truc que tu dois pas faire correctement qui lui fait fermer la connexion...