Win32, winsock, timeout et GPRS sur WM5 - C++ - Programmation
Marsh Posté le 09-06-2006 à 15:12:36
Pour info, lorsque je tape sur une adresse bidon (que j'ai testée auparavant sur un navigateur), j'ai bien un retour erreur lorsque connecté par usb et activesync, mais rien avec le GPRS.
Je me demande également si les ggsn propagent bien les erreurs réseaux tcp ?
Marsh Posté le 09-06-2006 à 14:12:53
Hello,
je sais que c'est pas forcément le meilleur endroit, mais vu l'activité du forum PDA,je préfère poster ici.
J'ai une appli en win32 sur smartphone WM5 qui se connecte à un serveur web (via GPRS) pour récupérer des infos. Afin de minimiser la quantité de données échangées, le serveur attend un moment avant de répondre.
Mon problème est le suivant: lorsque l'on coupe la connection GPRS (en appuyant sur la touche rouge) alors que la socket (winsock) est ouverte, les fonctions connect(), send() ou recv() ne plantent pas. La socket reste en attente et je ne peux pas traiter l'erreur (relancer le gprs etc...).
J'ai essayé de mettre un timeout sur la socket pour forcer une remontée d'erreur:
Apparemment, d'après MSDN, SNDTIMEO et RCVTIMEO ne sont pas implémentés; ça compile évidemment pour rester compatible posix, mais c'est tout.
Ce qui est étonnant c'est que lorsque le smartphone est relié à activesync avec le cable usb, si je coupe le réseau de mon pc, j'ai bien des erreurs qui sont levées et que je peux traiter. Mais avec la connexion GPRS, même si je relance la connexion GPRS après la déconnection, la socket reste dans les choux et il faut la fermer manuellement et en rouvrir une autre.
Je commence à penser à un bug d'implémentation entre la stack GPRS et la stack TCP mais c'est assez difficile de tracer ce genre d'erreur.
Voilà j'espère que ça parle à quelqu'un.
Merci d'avance.
---------------
Voir les RAW sous Android: https://market.android.com/details? [...] .RawVision Blog Photo: http://photouch.me Applications mobiles: http://caketuzz.com Wapcam Project: http://wapcam.mobi