POPLib
-
<p>En fait je l'ai terminé il y a quelques jours, il faut juste que je prenne le temps d’écrire une présentation
</p>
<p> </p>
<p>Pendant mes recherches j'ai vu une lib comme celle ci en C++, sur codeproject : <a href="http://www.codeproject.com/Articles/3458/A-POP-class-with-WIN-API-APOP-Command-support" rel="external nofollow">http://www.codeproject.com/Articles/3458/A-POP-class-with-WIN-API-APOP-Command-support</a></p> -
<p>Sinon, Boost pour le C++, GG pour la lib
</p> -
<p>Je vient de trouver un bug:</p>
<p> </p>
<p>La propriété Connected de la classe POP3Client dépend de la propriété TcpClient.Socket.Connected, et je vient de découvrir que cette propriété est "true" si <em>la dernière</em> opération (read/write) c'est bien déroulée, peu importe si la connexion est ouverte ou fermée. Donc elle peut indiquer "true" même si la connexion a été coupée. Le problème c'est que je l'utilisais pour vérifier si le client était toujours connecté (certain serveurs vous déconnecte après une certaine période d’inactivité). J'ai lu que la seule façon de s'assurer que la connexion est toujours ouverte c'est d'essayer d'envoyer un message "test" (en l’occurrence "NOOP" pour POP3), mais ça pause des problèmes a cause du serveur qui envoie un message de bienvenue a la connexion.</p>
<p>C'est assez rare que ça arrive, donc je vais le laisser pour l'instant, je vais publier mon client et puis si j'ai du temps a perdre j'essaierais de le régler.</p> -
<blockquote class="ipsQuote" data-cite="davydavek" data-ipsquote="" data-ipsquote-contentclass="forums_Topic" data-ipsquote-contentcommentid="12105" data-ipsquote-contentid="1086" data-ipsquote-contenttype="forums" data-ipsquote-timestamp="1413214951" data-ipsquote-username="davydavek"><div>
<div>
<p>Si quelqu'un sait comment être sur que la connexion est toujours ouverte sans avoir a envoyer de données, je suis tout ouï.</p>
<p>Sinon je devrais juste trouver une solution en changeant l'organisation des fonctions d'envoi.</p>
</div>
</div></blockquote>
<p>en théorie, la plupart des RFC incluent un "ping". SInon, la plupart du temps, tant que la socket ne saute pas, c'est bon</p> -
<p>Oui j'y ai penser au début, sauf que j'ai remarquer le ma fonction d'envoi check la connexion (en utilisant une méthode qui n'est pas fiable). Donc si j'essaie de check en envoyant un message ça me fait une boucle infinie qui se termine par une stackoverflow
</p> -
<blockquote class="ipsQuote" data-cite="davydavek" data-ipsquote="" data-ipsquote-contentclass="forums_Topic" data-ipsquote-contentcommentid="12117" data-ipsquote-contentid="1086" data-ipsquote-contenttype="forums" data-ipsquote-timestamp="1413251272" data-ipsquote-username="davydavek"><div>
<div>
<p>Oui j'y ai penser au début, sauf que j'ai remarquer le ma fonction d'envoi check la connexion (en utilisant une méthode qui n'est pas fiable). Donc si j'essaie de check en envoyant un message ça me fait une boucle infinie qui se termine par une stackoverflow
</p>
</div>
</div></blockquote>
<p>Faut revoir ta conception! Y'a quelque chose qui vas pas!</p> -
<p>Après y avoir réfléchit pas mal de temps, je pense que je vais le laisser comme ça. Si jamais la connexion est coupée, l'utilisateur ne le remarqueras pas mais vu que la commande ne vas pas s’exécuter, il vas essayer de la relancer, et a ce moment, la propriété TcpClient.Client.Connected retournera false vu que la dernière opération ne s'est pas exécutée, ce qui fait que le programme affichera un message d’erreur (sans pour autant lancer une exception). Après il suffit juste de rétablir la connexion et de se reconnecter au serveur.</p>
-
<p>Update:</p>
<p> </p>
<p>Je me suis rendu compte que j'avais écrit un parseur MIME, fonctionnel mais pas complet; sans m'en rendre compte. Du coup j'ai rechercher un peu plus le format du protocole et j'ai réussit a le "compléter" (il ne manque plus que les attachements) , et a l’intégrer a la librairie. Ce qui fait qu'elle est bien plus stable maintenant.</p>
<p> </p>
<p>Commit git: <a href="https://github.com/DavyWk/POP-Lib/commit/21782a39945df2262347673d4768c61a9e68e844" rel="external nofollow">https://github.com/DavyWk/POP-Lib/commit/21782a39945df2262347673d4768c61a9e68e844</a></p>
<p> </p>
<p>edit: Fix d'un petit bug a cause de l'encodage en Base64.</p>
Hello! It looks like you're interested in this conversation, but you don't have an account yet.
Getting fed up of having to scroll through the same posts each visit? When you register for an account, you'll always come back to exactly where you were before, and choose to be notified of new replies (either via email, or push notification). You'll also be able to save bookmarks and upvote posts to show your appreciation to other community members.
With your input, this post could be even better 💗
Register Login
</p>