DOCUMENTATION EN LIGNE
DE WINDEVWEBDEV ET WINDEV MOBILE

Aide / WLangage / Fonctions WLangage / Communication / Sockets
  • 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/iPadWidget IOSApple WatchMac CatalystUniversal Windows 10 App
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 :
  • WINDEV 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.
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
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 :
SocketMarqueurFinPermet de préciser un marqueur de fin dans le paramètre <Option>.
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.
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>.
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.
Par défaut, le marqueur de fin du buffer est la chaîne de caractères "<EOF>".
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.
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".
<Option> : Chaîne de caractères optionnelle 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).
Composante : wd290com.dll
Version minimum requise
  • Version 9
Documentation également disponible pour…
Commentaires
Cliquez sur [Ajouter] pour publier un commentaire

Dernière modification : 21/06/2023

Signaler une erreur ou faire une suggestion | Aide en ligne locale