|
[WM20] Socket UDP Android |
Started by nicko7780, Aug., 31 2015 7:25 PM - 8 replies |
| |
| | | |
|
| |
Posted on August, 31 2015 - 7:25 PM |
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 |
| |
| |
| | | |
|
| | |
| |
Posted on September, 01 2015 - 11:43 AM |
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 |
| |
| |
| | | |
|
| | |
| |
Posted on September, 01 2015 - 2:08 PM |
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 |
| |
| |
| | | |
|
| | |
| |
Posted on September, 01 2015 - 3:12 PM |
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)
SocketEcrit("Socket1",UnicodeVersAnsi(b), Server, Port) |
| |
| |
| | | |
|
| | |
| |
Posted on September, 01 2015 - 4:28 PM |
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)
SocketEcrit("Socket1",UnicodeVersAnsi(b), Server, Port) |
| |
| |
| | | |
|
| | |
| |
Posted on September, 01 2015 - 5:29 PM |
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. |
| |
| |
| | | |
|
| | |
| |
Registered member 2 messages |
|
Posted on June, 29 2020 - 11:35 PM |
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 |
| |
| |
| | | |
|
| | |
| |
Posted on June, 30 2020 - 9:28 AM |
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.comOn 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? |
| |
| |
| | | |
|
| | |
| |
Registered member 2 messages |
|
Posted on June, 30 2020 - 6:22 PM |
merci pour ta réponse j'ai réussi en passant par le protocole UDP par contre impossible avec les socket TCP |
| |
| |
| | | |
|
| | | | |
| | |
|