Exemple de programmation sockets Unix

Les deux fichiers ci-dessous sont des exemples de programmation avec des sockets Unix. unix-ex.c est un serveur et ishell.c un client. Ils sont tirés du logiciel que j'ai écrit pour piloter mes expériences de nanomagnétisme.

unix-ex.c est un extrait de fieldd.c, un serveur qui contrôle le champ magnétique dans mes expériences et qui répond à des commandes ASCII. Tout le code relatif à la commande du champ a été enlevé : il ne reste que le code qui se charge des communications.

ishell (abréviation de « Instrument shell ») est un petit programme que j'ai écrit pour obtenir un shell sur mes instruments de mesure ou sur fieldd. ishell prend en paramètre le nom du point de communication qui peut être soit un fichier spécial type caractère (dans le cas des instruments branchés sur le bus GPIB) soit un socket Unix (dans le cas de fieldd).

Remarque : On ne peut pas faire de select() sur le bus GPIB, du moins avec le pilote National Instruments. On est alors obligés de savoir à l'avance si un instrument a quelque chose à nous dire. ishell décide de faire un read() sur un instrument si la dernière commande envoyée se termine par un point d'intérrogation, ce qui dans le langage des instruments (SCPI) signifie que la commande demande une réponse de l'instrument. Sur un protocole purement orienté sockets, select() serait plus appriprié.

Voici le code :


Edgar Bonet <webmaster@edg...>.
[pour une Europe sans brevets logiciels] [HTML by Vim] [HTML 4.01 valide !]