PC SOFT

DOCUMENTATION EN LIGNE
DE WINDEV, WEBDEV ET WINDEV MOBILE

  • Type de transmission d'un message
  • Différences de fonctionnement entre les constantes SocketMarqueurFin et SocketMarqueurFinBuffer
  • Message avec marqueur de fin
  • Transmission entre deux postes utilisant des formats de chaînes de caractères différents (UNICODE et ANSI)
WINDEV
WindowsLinuxUniversal Windows 10 AppJavaEtats et RequêtesCode Utilisateur (MCU)
WEBDEV
WindowsLinuxPHPWEBDEV - Code Navigateur
WINDEV Mobile
AndroidWidget AndroidiPhone/iPadApple WatchUniversal Windows 10 AppWindows Mobile
Autres
Procédures stockées
SocketChangeModeTransmission (Fonction)
En anglais : SocketChangeTransmissionMode
Change le mode de transmission utilisé sur un socket. Il est ainsi possible de définir le codage du message lors de la transmission. Les fonctions SocketLit et SocketEcrit utilisent le mode de transmission indiqué.
Attention : Le mode de transmission doit être identique sur le poste serveur et sur le poste client.
Remarques :
  • WINDEVWindows Mobile Si vous utilisez une application WINDEV sur le poste serveur et sur le poste client, le changement de mode de transmission doit être effectué sur le poste client et sur le poste serveur.
  • Sockets UDP : Les sockets de type UDP sont toujours de type "Socket sans marqueur". La fonction SocketChangeModeTransmission ne doit pas être utilisée avec des sockets de type UDP. Le protocole UDP est un protocole non fiable : la chaîne envoyée avec la fonction SocketEcrit peut ne pas arriver ou arriver plusieurs fois. L'ordre des chaînes envoyées n'est pas toujours respecté.
Rappel : Un socket est une ressource de communication utilisée par les applications pour communiquer d'une machine à une autre sans se soucier du type de réseau.
Versions 15 et supérieures
Android Cette fonction est désormais disponible pour les applications Android.
Nouveauté 15
Android Cette fonction est désormais disponible pour les applications Android.
Android Cette fonction est désormais disponible pour les applications Android.
Versions 17 et supérieures
iPhone/iPad Cette fonction est désormais disponible pour les applications iPhone/iPad.
Universal Windows 10 App Cette fonction est désormais disponible pour les applications Windows Phone.
Nouveauté 17
iPhone/iPad Cette fonction est désormais disponible pour les applications iPhone/iPad.
Universal Windows 10 App Cette fonction est désormais disponible pour les applications Windows Phone.
iPhone/iPad Cette fonction est désormais disponible pour les applications iPhone/iPad.
Universal Windows 10 App Cette fonction est désormais disponible pour les applications Windows Phone.
Versions 18 et supérieures
Widget Android Cette fonction est désormais disponible en mode Widget Android.
Nouveauté 18
Widget Android Cette fonction est désormais disponible en mode Widget Android.
Widget Android Cette fonction est désormais disponible en mode Widget Android.
Versions 23 et supérieures
Universal Windows 10 App Cette fonction est désormais disponible en mode Universal Windows 10 App.
Nouveauté 23
Universal Windows 10 App Cette fonction est désormais disponible en mode Universal Windows 10 App.
Universal Windows 10 App Cette fonction est désormais disponible en mode Universal Windows 10 App.
Exemple
// Mise en place du mode de transmission avec EOF comme marqueur de fin
SI SocketChangeModeTransmission("Serveur", SocketMarqueurFin) = Vrai ALORS
        Info("Mode de transmission modifié")
FIN
// Mise en place du mode de transmission avec CRLF comme marqueur de fin
SI SocketChangeModeTransmission(sNomSocket, SocketMarqueurFin, CRLF) = Faux ALORS
        RENVOYER Faux
FIN
Syntaxe
<Résultat> = SocketChangeModeTransmission(<Nom du socket> , <Type de transmission> [, <Option>])
<Résultat> : Booléen
  • Vrai si la fonction a réussi,
  • Faux dans le cas contraire (nom du socket invalide par exemple). En cas d'erreur, il est possible de connaître le détail de l'erreur grâce à la fonction ErreurInfo.
<Nom du socket> : Chaîne de caractères (entre guillemets)
Nom du socket défini sur le serveur. Ce nom a été défini :
WINDEV Attention : le nom du socket est "case-sensitive".
<Type de transmission> : Constante
Type de transmission à adopter :
SocketTailleDébut
(Valeur par défaut)
Le message est un buffer de la forme :
<Longueur>+RC+<Chaîne ou buffer à envoyer>

<Longueur> est une chaîne ANSI correspondant à la longueur de la chaîne ou du buffer en octets.
Exemple : "9"+RC+"HelloWord".
SocketMarqueurFinPermet de préciser un marqueur de fin dans le paramètre <Option>. Par défaut, le marqueur de fin est la chaîne de caractères "<EOF>".
Message de la forme "Hello world<EOF>"
SocketMarqueurFinBufferPermet de préciser un marqueur de fin de buffer dans le paramètre <Option>. Par défaut, le marqueur de fin du buffer est la chaîne de caractères "<EOF>". Consultez les remarques pour connaître la différence avec la constante SocketMarqueurFin.
SocketSansMarqueurFinAucun marqueur n'est ajouté et/ou enlevé de la chaîne de caractères transmise. Dans ce cas, le nombre maximum d'octets pouvant être transmis peut être spécifié dans la fonction SocketLit.
<Option> : Chaîne de caractères optionnelle (entre guillemets) ou constante du WLangage (RC, CRLF, EOT)
Marque de fin (par défaut ce marqueur est la chaîne de caractères "<EOF>").
Remarques

Type de transmission d'un message

Le type de transmission du message définit le mode utilisé pour déterminer la longueur du message.
Par défaut (constante SocketTailleDébut), le nombre de caractères du message est indiqué au début du message. Ce mode de transmission est conseillé lors d'une communication par sockets entre deux applications WINDEV.
Les constantes SocketMarqueurFin et SocketMarqueurFinBuffer permettent d'utiliser le mode standard de détermination de la longueur des messages lors de communication par sockets. Ce mode de transmission est conseillé lors d'une communication par sockets entre une application WINDEV et une autre application. Dans ce cas, il sera nécessaire d'inclure un caractère spécifique dans le message afin d'indiquer que le message est terminé.

Différences de fonctionnement entre les constantes SocketMarqueurFin et SocketMarqueurFinBuffer

Dans les deux cas, la lecture sur le socket attend de recevoir le marqueur de fin.
  • Avec la constante SocketMarqueurFin : Si des éléments sont reçus après le marqueur de fin, une erreur WLangage est générée, indiquant que les marqueurs de fin ne sont pas respectés.
  • Avec la constante SocketMarqueurFinBuffer : Si des éléments sont reçus après le marqueur de fin, la chaîne reçue est lue jusqu'au marqueur de fin, l'excédent est conservé et reporté dans la prochaine lecture. Il est ainsi possible de réaliser des lectures partielles. Ce mode permet de simplifier le traitement de certains protocoles standard sur Internet.
    Par exemple : lors de la connexion à un serveur de news (protocole NNTP), le protocole indique que le marqueur de fin peut être "<CRLF>" ou bien "<CRLF>.<CRLF>". Avec le mode "bufferisé", il est possible de lire la première ligne, et d'attendre le deuxième marqueur uniquement s'il doit y en avoir un.

Message avec marqueur de fin

Si l'encodage du message prend en compte le marqueur de fin, il n'est pas nécessaire de le préciser dans le message.

Transmission entre deux postes utilisant des formats de chaînes de caractères différents (UNICODE et ANSI)

Lors de la transmission de messages entre deux postes utilisant un format de chaînes de caractères différent, certaines conversions peuvent être nécessaires (fonctions AnsiVersUnicode ou UnicodeVersAnsi).
Composantes
WINDEVWEBDEV - Code ServeurEtats et Requêtes wd230com.dll
Windows Mobile wp230com.dll
Java wd230java.jar
Linux wd230com.so
Android wd230android.jar
Version minimum requise
  • Version 9
Documentation également disponible pour…
Commentaires
Cliquez sur [Ajouter] pour publier un commentaire