DOCUMENTATION EN LIGNE
DE WINDEVWEBDEV ET WINDEV MOBILE

Aide / WLangage / Fonctions WLangage / Communication / Sockets
  • Nombre d'octets transmis
  • Communication avec des automates ou des applications non WINDEV
  • 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
Récupère un message envoyé par un autre socket. Cette fonction peut être utilisée sur un poste client ou un poste serveur.
Remarques :
  • Socket UDP : Le protocole UDP étant un protocole "Non connecté", lors de la récupération du message, WINDEV enregistre l'adresse IP et le port de la machine qui a envoyé le message. Ces informations sont disponibles avec la fonction SocketClientInfo.
  • Socket SSL : La fonction SocketLit peut être utilisée avec les sockets SSL.
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.
WINDEVJavaCode Utilisateur (MCU)
// Ajout des messages reçus dans un champ Table
TableAjoute(TABLE_Table1, "1" + TAB + SocketLit("Serveur", Faux) + ...
		TAB + SocketClientInfo("serveur", SocketAdresse) + ...
		TAB + SocketClientInfo("serveur", SocketPort))
Syntaxe
<Résultat> = SocketLit(<Nom du socket> [, <Attente indéfinie> [, <Attente maximale> [, <Nombre maximum d'octets>]]])
<Résultat> : Buffer ou chaîne de caractères
  • Message lu.
  • Buffer vide ou chaîne vide ("") si aucun message n'a été reçu.
<Nom du socket> : Chaîne de caractères
Nom du socket qui a reçu le message.
Dans des applications WINDEV :
WINDEV Attention : le nom du socket est "case-sensitive".
<Attente indéfinie> : Booléen optionnel
  • Vrai (valeur par défaut) : attente indéfinie d'un message de client.
  • Faux : attente jusqu'à l'<Attente maximale>.
<Attente maximale> : Entier optionnel ou Durée optionnelle
Attente maximale (en millisecondes) d'un message de client si l'attente indéfinie est à Faux. Ce paramètre peut correspondre à :
  • un entier correspondant au nombre de millisecondes,
  • une variable de type Durée,
  • l'indication directe de la durée (par exemple 1 s ou 10 ms).
Par défaut, cette attente est égale à 1000 millisecondes (1 seconde).
<Nombre maximum d'octets> : Entier optionnel
Nombre maximum de caractères pouvant être transmis. Le nombre de caractères reçus n'est pas garanti.
Ce paramètre est pris en compte uniquement si la constante SocketSansMarqueurFin est spécifiée dans la fonction SocketChangeModeTransmission. Dans le cas contraire, ce paramètre est ignoré.
Par défaut, ce paramètre correspond à 4096 octets.
Remarques
WINDEVJavaCode Utilisateur (MCU)

Nombre d'octets transmis

Le paramètre <Nombre maximum d'octets> correspond au nombre maximum de caractères pouvant être transmis. Le nombre de caractères reçus n'est pas garanti.
La fonction SocketLit lit une trame réseau et la retourne immédiatement, sans transformation. Or la taille d'une trame réseau dépend de nombreux facteurs (paramétrage du réseau, vitesse et encombrement du réseau, ...).
La fonction SocketEcrit envoie si possible le buffer passé en paramètre en une seule trame. Mais si le réseau n'accepte pas cette trame, le buffer peut être découpé en plusieurs trames (ou à l'inverse, le réseau peut fusionner des messages en une seule trame pour optimiser la bande passante).
Pour s'assurer de l'intégrité des messages transmis, il est nécessaire d'utiliser un protocole natif WINDEV et WEBDEV (avec les constantes SocketTailleDébut et SocketMarqueurFin de la fonction SocketChangeModeTransmission) ou d'implémenter un protocole spécifique.

Communication avec des automates ou des applications non WINDEV

Pour simplifier les échanges des données par socket, un mode de transmission est initialisé par défaut.
Dans le cas d'une communication avec un module externe (application non WINDEV, automate, ...), ce mode de transmission peut empêcher le bon fonctionnement des communications.
La fonction SocketChangeModeTransmission permet de changer ce mode de transmission : la constante SocketSansMarqueurFin permet de ne pas modifier les trames lues et écrites.

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 (par exemple ANSI et UNICODE), certaines conversions peuvent être nécessaires. Ces conversions peuvent être effectuées grâce aux fonctions AnsiVersUnicode et UnicodeVersAnsi.
Classification Métier / UI : Code métier
Composante : wd300com.dll
Version minimum requise
  • Version 9
Documentation également disponible pour…
Commentaires
Limitation Android
Socket lit est bloquant (attente avec durée maximale non prise en compte) pour la version 4.1 d'Android
Thierry
15 mar. 2018

Dernière modification : 08/03/2024

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