Présentation
Documentation
L'équipe
Sérialisation
 
Programmes
Objets
Libs Utilitaires
Libs Internes
   
 
Editeur
Syntaxes
Windows
Versions
   

SCR/AL1 - Evolutions récentes

2. Modifications apportées dans la version 4.49 (février 2000)

LANGAGE SCR/AL1

SMPAGE

Nouvelles options permettant d'introduire dans les Pages générées automatiquement des commandes libres:

        APG "commandes libres"
-
-
LPG "commandes libres"
-

SCREEN

Possibilité dans les SCREENS d'automatiser les boutons :

    #OK = boutons F10 et ESC
#F10ESC = #OK
#ESCF10 = ESC + F10
#F10 = F10 seul
#F10ESCF1 = F10, ESC, F1

Une ligne horizontale est tirée avant les boutons et une ligne blanche en-dessous.

Le texte de boutons est pour l'instant hardcodé.

SCRW32 : COULEURS DES CHAMPS

Les couleurs indiquées dans les définitions de champs sont respectées en Windows. Les attributs comme bold, underline sont remplacés par des couleurs.

Si on ne souhaite pas de couleurs, on peut fixer la globale WIN_NOCOLOR à Yes ou la variable globale WSCR_NOCOLOR à 1.

        GLOBAL WIN_NOCOLOR    {Yes|No}
int WSCR_NOCOLOR;

Fonctions et variables

TIMER

Implémentation des Timers en SCRW32, notamment pour gérer les LOCK_TIME et END_TIME en SCR.

    Variable long   WSCR_TIMER_DELAY = 1000;
Variable int (*WSCR_TIMER_FN)() = 0;
Fonction : WscrSetTimer(int ms);

Toutes les WSCR_TIMER_DELAY ms, une fonction est appelée pour gérer les locks et fin de processus (SCR_LOCK_TIME, SCR_END_TIME_1 et SCR_END_TIME_2).

De plus, si WSCR_TIMER_FN est non nul, cette fonction est appelée. Si elle retourne une valeur non nulle, le programme s'arrête. Sinon, le programme continue normalement.

La fonction WscrSetTimer() peut être appelée n'importe quand pour redéfinir le délai entre deux appels aux fonctions de timer ou, en passant 0 comme paramètre, annuler le timer.

IS_set_name()

Le pointeur is->is_filename est alloué par SCR_malloc() lors du chargement du .scr et peut donc être freé.

Groupe Sockets

Les librairies s32wo et scr4wo contiennent toutes les fonctions utiles pour construire un serveur et un client TCP/IP à l'aide des sockets Windows.

Le serveur peut être mono-thread, multi-thread ou multi-process.

L'implémentation des sockets permet de communiquer à l'aide de nombreux protocoles différents, comme TCP-IP ou IPX. Dans cette implémentation, seul TCP-IP a été testé et implémenté.

Pour pouvoir exploiter ces fonctions, le système (WinNT, Win95 ou supérieur) doit disposer d'une couche TCP-IP. Seules les fonctions des sockets de base (winsock 1.1) sont exploitées.

Serveur TCP/IP

Pour construire un serveur, il suffit de définir une fonction serveur qui sera passée comme argument à la fonction de création du socket.

La fonction serveur sera automatiquement appelée et est uniquement chargée de lire, de traiter et d'écrire sur le socket. Elle ne doit effectuer aucune opération d'ouverture, de connexion ou de déconnexion : ces opérations sont gérées par la fonction de création de serveur.

Selon les paramètres passés, le serveur sera mono-thread, multi-thread ou multi-process.

Après une connexion, le serveur commence toujours par lire. Le client doit donc, après connexion, écrire sur le socket avant toute autre opération.

Client TCP-IP

Le client doit se connecter à un serveur identifié par une adresse IP ou un nom (résolu par un DNS). Ensuite, il écrit et lit sur le socket. Pour terminer, le client ferme sa connexion.

Fonction d'écriture

Les écritures sur le socket peuvent ou non être bufferisées. Les fonctions WSockB*() sont bufferisées. La variable WSOCK_BUFSIZE détermine la taille du buffer.

Pour des raisons de performance, il est toujours préférable d'utiliser la version bufferisée des fonctions d'écriture. En effet, le temps d'envoi d'un packet de 10 bytes est presque le même que celui d'un packet de 1000 bytes. De plus, dans le cas d'une conversation, l'envoi de deux packets successifs par le même côté du socket peut générer une perte très importante due à la nécessaire resynchronisation entre les deux partenaires.

Dans tous les cas, l'utilisation d'une fonction de lecture ou d'une fonction d'écriture non bufferisée envoie le contenu du buffer vers le socket.

Fonction de lecture

La bufferisation est gérée par la librairie de socket de Windows. Il n'y a donc pas lieu de choisir ici entre une version bufferisée ou non.

Il est à noter que la lecture peut ne pas retourner tous les bytes envoyés par le socket partenaire. Si on veut exactement lg bytes, il vaut mieux utiliser la fonction WSockReadLgBytes que WSockRead, cette dernière n'assurant pas la lecture de lg bytes.

Variables

Groupe WscrNet

Fonctions permettant de monter et supprimer des disques réseau par l'API Win32.

Groupe WscrRas

Fonctions permettant de se connecter à Internet par l'API Win32.

WSCR_NOCOLOR

voir GLOBAL WIN_NOCOLOR.

Copyright © 1998-2015 Jean-Marc Paul and Bernard PAUL - Envoyez vos remarques ou commentaires à bernard@xon.be