PC SOFT

GRUPOS DE DISCUSSÃO PROFISSIONAL
WINDEVWEBDEV e WINDEV Mobile

Inicio → WINDEV Mobile (versões anteriores) → [WM12] Gérer perte de connexion wifi
[WM12] Gérer perte de connexion wifi
Iniciado por Julie, mai., 31 2011 11:32 AM - 2 respostas
Publicado em maio, 31 2011 - 11:32 AM
Bonjour,

Je travaille actuellement sur un serveur socket delphi et un client windev mobile 12 qui communiquent par wifi...
Mais j'aimerai savoir gérer le fait qu'il y ait une perte de connexion wifi ou un passage du client dans une zone d'ombre...
Comment puis-je faire ? Sachant que la fonction Ping n'existe pas en WinDev Mobile ...

J'ai tenté ceci :

Procedure Pinging(nIcmp est un entier, sAdrip est une chaîne, ntimeout est un entier)

ICMP_ECHO est composé de
ipadr est un entier
status est un entier
RoundTripTime est un entier
DataSize est un entier sur 2 octets
Reserved est un entier sur 2 octets
Data est un entier
ttl est une chaîne sur 2
tos est une chaîne sur 2
flag est une chaîne sur 16
opsize est une chaîne sur 2
opdata est un entier
datat est une chaîne sur 250
FIN

ipad est un entier = AppelDLL32("ws2_32","inet_addr",sAdrip)
cretour est un entier

SI AppelDLL32("icmp.dll","IcmpSendEcho",nIcmp, ipad ,"Test Ping Echo", 32 , Null, &ICMP_ECHO , Dimension(ICMP_ECHO)+8, ntimeout )<>0 ALORS
cretour = ICMP_ECHO.RoundTripTime
SINON
cretour = -1
FIN

RENVOYER cretour


Que je teste à chaque socketEcrit :

Procedure EcritSocket(nomSocket, messageAEnvoyer)

icmp est un entier = AppelDLL32("icmp.dll","IcmpCreateFile")
adresseip est une chaîne = INILit("Connexion", "AdresseIP", "", cheminFichierIni)

nDelaims est un entier = Pinging (icmp,adresseip,1000)

sMessage est une chaîne = Taille(SansEspace(messageAEnvoyer)+"#")+RC+SansEspace(messageAEnvoyer)+"#"

SI nDelaims<>-1 ALORS
Info("Ordinateur trouvé ! Ping de "+nDelaims+" ms")
SI EnModeTest() ALORS
//Si je suis en mode test (via l'ordinateur) j'envoie le message normalement avec SocketEcrit
SI SocketEcrit(nomSocket, sMessage) ALORS
Multitâche(100)
SINON
gsMsgErreurPopUp = "Erreur écriture socket"
Ouvre(Popup_Erreur)
RENVOYER 0
FIN
SINON
//Si je suis en mode pocket PC j'envoie le message avec SocketEcrit mais je fais un UnicodeVersAnsi pour que le serveur comprenne ce que j'envoie
SISocketEcrit(csNomSocket, UnicodeVersAnsi(sMessage)) ALORS
Multitâche(100)
SINON
gsMsgErreurPopUp = "Erreur écriture socket"
Ouvre(Popup_Erreur)
RENVOYER 0
FIN
FIN
SINON
gsMsgErreurPopUp = "Problème connexion internet"
Ouvre(Popup_Erreur)
FIN


ça fonctionne en mode test mais pas en mode pocketPc où j'ai Erreur au chargement de la DLL 'icmp.dll' ... j'ai pourtant récupérer icmp.dll dans mon pc pour le transférer dans le PSION...

Merci d'avance,
Publicado em junho, 22 2011 - 4:58 PM
Pour remplacer le ping, je fais un houvreconnexion() sur une connexion HFCS que j'ai créé uniquement ce test
Publicado em junho, 22 2011 - 5:15 PM
Oui ben du coup j'utilise le SocketConnecte moi :) merci pour l'info