PC SOFT

FORUMS PROFESSIONNELS
WINDEVWEBDEV et WINDEV Mobile

Accueil → WINDEV Mobile 2024 → [WM20] Socket UDP Android
[WM20] Socket UDP Android
Débuté par nicko7780, 31 aoû. 2015 19:25 - 8 réponses
Posté le 31 août 2015 - 19:25
Bonjour à tous,

J'ai développé une petite application sous Windev Mobile 20 qui envoie un message via socket UDP.
Sous mon environnement de développement + emulateur android, tout fonctionne bien.

Dès que je génère le APK et que je l'installe sur mon téléphone, ça ne fonctionne pas.

Je sèche complètement.

Auriez-vous une idée pourquoi cela fonctionne sous l'émulateur mais pas sur mon tel ?


Merci
Posté le 01 septembre 2015 - 11:43
Bonjour Nico,

pour une des multiples raisons possibles... A savoir :
- ANSI-UNICODE
- fichiers pas la où tu les attends
- adresse socket incorrecte depuis le tél
- etc.
- etc.

Tout ca a été discuté de nombreuses fois ici, donc un peu de lecture
s'impose.

Dans tous les cas, sans avoir de message d'erreur ou de code qui ne
fonctionne pas comme tu l'espère, on ne va pas pouvoir t'aider plus...

Si tu ne sais pas ce qui ne fonctionne pas, ajoute des traces dans ton
programme pour voir jusqu'ou tu vas et vérifier chaque résultat
intermédiaire

Cordialement


--
Fabrice Harari
Consultant WinDev, WebDev et WinDev Mobile International

Disponible : WXShowroom.com, WXReplication (open source)
Bientôt : WXEDM (open source)
Plus d'information sur http://fabriceharari.com


On 8/31/2015 11:25 AM, nicko7780 wrote:
Bonjour à tous,

J'ai développé une petite application sous Windev Mobile 20 qui envoie
un message via socket UDP.
Sous mon environnement de développement + emulateur android, tout
fonctionne bien.

Dès que je génère le APK et que je l'installe sur mon téléphone, ça ne
fonctionne pas.

Je sèche complètement.

Auriez-vous une idée pourquoi cela fonctionne sous l'émulateur mais pas
sur mon tel ?


Merci
Posté le 01 septembre 2015 - 14:08
Bonjour,

Merci d'avoir répondu.
Ecrire de lire les messages déjà présents sur les forums est une réponse assez simpliste, facile et sans fondement.
Il est vrai que je ne l'ai pas mentionné, mais oui, j'ai lu les différents messages et j'ai essayé les solutions proposées mais malheureusement je n'ai pas trouvé de solution à mon problème.

- ANSI-UNICODE
ceci a en effet déjà été abordé dans un des message du forum et j'ai essayé d'appliquer la méthode proposée, c'est à dire : ansiversunicode(). Malheureusement cela n'a pas résolu mon problème.

- adresse socket incorrecte depuis le tél
J'ai bien vérifié ce point et la configuration port/IP serveur est identique sur l'emulateur et mon appareil Android.

- fichiers pas la où tu les attends
Serai-il possible d'approfondir cela. Quelle fichier pourrait manquer.
J'envoie des trames, je ne manipule aucun fichier.

Concernant les messages d'erreur, je n'en ai pas car tout se passe bien dans le programme. Je ne peux donc pas en poster ici.


Je viens d'installer un analyseur réseau afin de voir les trames sur le réseau.
Quand j'utilise mon emulateur Windev, mon message est bien formé sur 3 Bytes.
Mais quand j'utilise mon appareil android, j'ai un message mal formé sur 8 Bytes
il y a donc bien un soucis avec le format des données.
Je vais de nouveau regarder du côté de ANSI-UNICODE, j'ai du râté queleque chose.


Merci
Posté le 01 septembre 2015 - 15:12
Je viens de trouver la solution.

Contrairement à ce que j'avais lu dans un message en appliquant ansiversunicode, cela n'a pas fonctionné pas dans mon cas.
Après pas mal de tests, j'ai trouvé une solution qui fonctionne.

Mon code fonctionnant sous l'emulateur Windev Mobile mais pas sur appareil android
b est un buffer

b[[1]] = 0x42
b[[2]] = 0x0
b[[3]] = 0x55

SocketEcrit("Socket1",b, Server, Port)


J'ai ensuite modifié comme cela et tout fonctionne (Emulator et Appareil android)
b est une chaîne

b = Caract(66) + Caract(0) + Caract(85) // 0x42, 0x0, 0x55

SocketEcrit("Socket1",UnicodeVersAnsi(b), Server, Port)
Posté le 01 septembre 2015 - 16:28
Ca, c'est du au fait que sous android, il n'y a pas d'entier sur un
octet (de mémoire, les plus petits font 4)



Donc, quand on fait
> b[[1]] = 0x42

0x42 est interprété comme un entier sur 4...

on met donc des octets dans 1, 2 3 et 4
> b[[2]] = 0x0
dans 2 3 4 et 5
> b[[3]] = 0x55
dans 3 4 5 et 6

et on à donc un buffer sur 6 au lieu de 3... magique

Mais c'est clair que sans voir ton code, on pouvait avoir du mal...

Cordialement


--
Fabrice Harari
Consultant WinDev, WebDev et WinDev Mobile International

Disponible : WXShowroom.com, WXReplication (open source)
Bientôt : WXEDM (open source)
Plus d'information sur http://fabriceharari.com


On 9/1/2015 7:12 AM, nicko7780 wrote:
Je viens de trouver la solution.

Contrairement à ce que j'avais lu dans un message en appliquant
ansiversunicode, cela n'a pas fonctionné pas dans mon cas.
Après pas mal de tests, j'ai trouvé une solution qui fonctionne.

Mon code fonctionnant sous l'emulateur Windev Mobile mais pas sur
appareil android
b est un buffer

b[[1]] = 0x42
b[[2]] = 0x0
b[[3]] = 0x55

SocketEcrit("Socket1",b, Server, Port)


J'ai ensuite modifié comme cela et tout fonctionne (Emulator et Appareil
android)
b est une chaine

b = Caract(66) + Caract(0) + Caract(85) // 0x42, 0x0, 0x55

SocketEcrit("Socket1",UnicodeVersAnsi(b), Server, Port)
Posté le 01 septembre 2015 - 17:29
Merci pour l’éclaircissement.
En approfondissant un peu, J'ai voulu forcé un entier sur 1 octet, et je me suis rendu compte que ça n'existait pas en effet.

C'est mon 1er programme sous Windev Mobile et Android, je ne suis pas familié avec ces "petites" subtilités.
ça va venir.

En tout cas, merci.
Membre enregistré
2 messages
Posté le 29 juin 2020 - 23:35
je suis en train de galérer tout comme toi dans ce domaine
est ce que je pourrais avoir le code serveur ( pour moi c'est sur pc) et le code tablette
Posté le 30 juin 2020 - 09:28
Fabrice Harari a écrit :
Bonjour Nico,

pour une des multiples raisons possibles... A savoir :
- ANSI-UNICODE
- fichiers pas la où tu les attends
- adresse socket incorrecte depuis le tél
- etc.
- etc.

Tout ca a été discuté de nombreuses fois ici, donc un peu de lecture
s'impose.

Dans tous les cas, sans avoir de message d'erreur ou de code qui ne
fonctionne pas comme tu l'espère, on ne va pas pouvoir t'aider plus...

Si tu ne sais pas ce qui ne fonctionne pas, ajoute des traces dans ton
programme pour voir jusqu'ou tu vas et vérifier chaque résultat
intermédiaire

Cordialement


--
Fabrice Harari
Consultant WinDev, WebDev et WinDev Mobile International

Disponible : WXShowroom.com, WXReplication (open source)
Bientôt : WXEDM (open source)
Plus d'information sur http://fabriceharari.com


On 8/31/2015 11:25 AM, nicko7780 wrote:
Bonjour à tous,

J'ai développé une petite application sous Windev Mobile 20 qui envoie
un message via socket UDP.
Sous mon environnement de développement + emulateur android, tout
fonctionne bien.

Dès que je génère le APK et que je l'installe sur mon téléphone, ça ne
fonctionne pas.

Je sèche complètement.

Auriez-vous une idée pourquoi cela fonctionne sous l'émulateur mais pas
sur mon tel ?


Merci



Pour pouvoir accéder aux différents posts d'un sujet précis il faudrait déjà avoir accès à un outil de recherche pertinent.

Il est quasi impossible d'effectuer une recherche correcte sur le forum.

C'est tout de même un comble non?
Membre enregistré
2 messages
Posté le 30 juin 2020 - 18:22
merci pour ta réponse j'ai réussi en passant par le protocole UDP par contre impossible avec les socket TCP