Communication sous UNIX les sockets

Dimension: px
Commencer à balayer dès la page:

Download "Communication sous UNIX les sockets"

Transcription

1 Communication sous UNIX les sockets Chaput Emmanuel Version 1.04 Résumé Ce but de ce petit document est de décrire la programmation des sockets sous Unix afin d aider le programmeur à développer des applications communicantes au sein d un réseau de type TCP/IP ou sur une machine Unix isolée. Une première partie est consacrée à la définition d un minimum de concepts qu il est essentiel de maîtriser avant de pouvoir se lancer efficacement dans une telle programmation. La seconde partie, s appuyant sur ces concepts élémentaires, présente les fonctions de base de la programmation des sockets ; l intégration de ces fonctions dans une architecture applicative de type client-serveur est alors présentée dans la section suivante. Toute remarque est évidemment la bienvenue, que ce soit sur le contenu ou sur ce qui sera ajouté ou supprimé dans la prochaine version ; merci de m en faire part à l adresse suivante : Emmanuel.Chaput@enseeiht.fr. 1

2 Table des matières 1 Introduction 3 2 Principes fondamentaux Communication avec ou sans connexion Communication avec connexion Communication sans connexion Pas de connexion Définition des principaux éléments Notion de domaine Notion de socket Notion d adresse Notion de liaison Notion de connexion Notion de message Principales étapes Manipulation des sockets Création d une socket Nommage Description de l adresse Liaison de l adresse à la socket Établissement d une connexion Communication En mode non connecté En mode connecté Fermeture Paramétrage En tant que socket En tant que fichier Manipulation avancée Modèle client-serveur Mode connecté Construction d un serveur Construction d un client Mode non connecté Construction d un serveur Construction d un client Annexe : fonctions complémentaires 31 2

3 1 Introduction Les sockets représentent un moyen de communication entre des processus UNIX s exécutant sur des machines interconnectées par un réseau ou, qui peut le plus peut le moins, sur une même et unique machine. Les sockets ont été introduites par les distributions logicielles de Berkeley (BSD) et représentent certainement l une des contributions majeures de ces distributions. Il n existe pas, à ma connaissance, de traduction française communément admise pour le terme de socket. Le terme point de communication est un peu trop long pour être satisfaisant ; celui de prise pourrait éventuellement convenir, mais manifestement il est désormais trop tard pour espérer le voir rentrer dans les mœurs... J utiliserais donc le terme anglophone, comme tout le monde, et le mettrai en ce qui me concerne au féminin. Afin de clarifier les notions et les principes introduits ici, je comparerai de façon récurente la communication entre processus via les sockets à la communication entre individus par les deux moyens de communication classiques que sont le téléphone et le courrier papier (la poste!). 2 Principes fondamentaux Pour bien comprendre le fonctionnement et la mise en œuvre de mécanismes de communication tels que ceux offerts par les sockets, il est impératif de bien comprendre les différences fondamentales entre une communication avec connexion et une communication sans connexion. C est le but de cette section. 2.1 Communication avec ou sans connexion Un des points importants à maîtriser lorsque l on parle de communication est la différence entre une communication avec connexion et une communication sans connexion. On parle également de communication orientée connexion et de communication orientée datagramme ou de mode conneté et de mode paquet. a b FIG. 1 Communication avec (a) ou sans (b) connexion La différence entre les deux est, comme le nom l indique, l existence ou non d une connexion entre les deux entités communicantes. Une telle connexion implique la mise en œuvre d un chemin, physique ou virtuel, entre les entités et sur lequel circulent les informations, mais elle a également d autres conséquences. Afin de les décrire rapidement, précisons la notion de connexion en étudiant les moyens de communication humains que sont le téléphone, qui offre un service avec connexion, et le courrier qui, lui, offre un service sans connexion Communication avec connexion Lorsque vous décidez de téléphoner à Tante Adèle, vous décrochez le téléphone et composez son numéro une fois pour toute la conversation. Si Tante Adèle est 3

4 chez elle (ou si vous l appelez sur son portable), elle décroche ; la connexion est établie et vous pouvez alors discuter tranquilement des dernières bétises du petit Nicolas. Puis, lorsque vous en avez terminé, vous raccrochez, la connexion est close. 1 2 DRRRING FIG. 2 Communication avec connexion Nous avons là à peu pret toutes les caractéristiques importantes d une communication orientée connexion : Établissement de la connexion Une connexion doit être établie explicitement par une requête de l une des deux entités communicantes (vous qui décrochez et composez le numéro dans notre exemple (figure 2 (1))) et par l accord de l autre entité (Tante Adèle qui décroche (figure 2 (3)), suite à la sonnerie de son téléphone (figure 2 (2))). Elle reste active jusqu à ce qu elle soit explicitement close par l une des deux entités (vous raccrochez (figure 2 (4))). Les adresses L adresse de l entité appelée (le numéro de téléphone de Tante Adèle) doit être fournie au service de communication une fois et une seule lors de l établissement de la connexion. L entité appelante, quand à elle, n a même pas besoin de posséder une telle adresse qui serait en effet ici inutile (si vous appelez Tante Adèle, elle n a besoin de votre numéro de téléphone). Fiabilité Pendant toute la durée de vie de la connexion, c est à dire pendant toute la communication, toutes les informations envoyées par une entité sont reçues par l autre, et ce sans pertes, et dans l ordre où elles ont été envoyées (tout au moins le réseau essaye de le garantir). Nous dirons donc de ce type de communication qu il est fiable et ordonné. Un flux d information La communication consiste ici en un flux d information qui possède un début et une fin (respectivement l établissement et la désactivation de la connexion) ; ce flux ne possède cependant aucune structuration interne du point de vue du service. Ce sont les entités communicantes qui donnent une structure à ce flux. Ainsi le système téléphonique ignore complètement la structure de votre dialogue, c est vous seul qui le structurez en phrases et qui décidez d attendre les réponses de Tante Adèle Communication sans connexion Imaginons que vous préférez finalement écrire à Tante Adèle, le mécanisme est alors complètement différent. Pour cela, vous écrivez une lettre, que vous pla- 4

5 Que j aime à faire apprendre un nombre utile aux sages, immortel Archimède, artiste ingénieur Qui de ton jugement peux priser la valeur? Tante Adèle 314 rue du cercle Circonférence Tante Adèle 314 rue du cercle Circonférence Tante Adèle 314 rue du cercle Circonférence cez dans une enveloppe (figure 3 (1)) sur laquelle vous écrivez l adresse de Tante Adèle, puis vous postez cette lettre (figure 3 (2)). Cette lettre est ensuite acheminée chez Tante Adèle (figure 3 (3)) par un chemin indéterminé FIG. 3 Communication sans connexion Vous pouvez ainsi écrire autant de lettres que vous le souhaitez et les poster de façon complètement indépendante. Elles seront d ailleurs transportées de façon complètement indépendante par la poste, en empruntant éventuellement des chemins différents, au hasard des grêves...). Si vous avez compris ça, vous avez compris le principe des communications sans connexion Pas de connexion Comme nous venons de le voir, pour un communication sans connexion, aucune relation physique ou virtuelle n a besoin d être établie entre les entités afin que celles-ci puissent échanger des informations. Votre correspondance papier avec Tante Adèle ne nécessite aucune connexion. Les adresses L adresse de l entité destination doit être précisée sur chaque paquet (ou message) qui lui est envoyé. Par symétrie, si cette entité est amenée à répondre, elle devra fournir au service de communication l adresse de l autre entité. Vous devez donc inscrire l adresse de Tante Adèle sur chaque lettre que vous lui envoyez. De plus, si vous souhaitez que Tante Adèle puisse vous répondre, elle doit connaître votre adresse. Nous verrons cependant qu il est possible de limiter ces contraintes grâce à la notion de pseudo connexion entre deux sockets. Fiabilité Aucune garantie n est fournie par le service de communication quant à la délivrance des messages, ni quant au chemin qu ils suivent ou à leur ordre d arrivée. Ainsi les lettres que vous envoyez à votre chère tante peuvent lui arriver dans un ordre différent de celui dans lequel vous les avez écrites, il est donc de bon ton de les dater. Vous ne pouvez également rien affirmer quant à leur trajet. Enfin, un accident peut malheureusement arriver et une de vos lettres être perdue ou détruite. Naturellement, dans la réalité, les lettres arrivent généralement toutes, dans l ordre, et via le même chemin, mais le principe est là, l ordre et la fiabilité ne sont pas assurés. Limites des paquets Bien qu aucune fiabilité ne soit assurée, la délimitation entre les paquets est conservée. La communication est donc structurée en un ensemble de paquets clairement délimités ; en revanche cette communication n a ni début, ni fin du point de vue du service. 5

6 Ainsi chaque unité d information que vous envoyez à votre tante est clairement délimitée par l enveloppe qui la contient ; c est en revanche vous et vous seul qui décidez du début et de la fin de votre correspondance. 2.2 Définition des principaux éléments Les principaux éléments impliqués dans une communication basée sur les sockets sont décrits par la figure S1 S2 P1 P3 P2 P4 S1 Adresse Socket Connexion Pseudo connnexion Liaison B FIG. 4 Les principales notions Nous allons décrire rapidement ces différentes notions Notion de domaine Définition 1 Le domaine d une socket définit la portée des communications qu il sera possible de réaliser avec cette socket. Attention, il ne s agit pas là de la portée en termes de distance, mais de la portée au sens de l ensemble des entitées avec lesquelles cette socket pourra communiquer ; le terme de famille est d ailleurs souvent utilisé pour désigner le domaine d une socket. Pour reprendre notre comparaison avec la communication humaine, nous pouvons comparer un domaine à un service particulier offert par un prestataire donné, oû les différents services de différents prestataires ne sont pas connectés entre eux ; ainsi, si vous utilisez l un d entre eux, vous ne pouvez communiquer qu avec ceux qui l utilisent également. Par exemple, si vous êtes un radio amateur, vous ne pourrez pas contacter tante Adèle si elle n utilise que le service téléphonique de France Telecom. Différents domaines existent, mais nous ne nous intéresserons par la suite qu à deux d entre eux, le domaine Unix et le domaine Internet. Le domaine Unix Le domaine Unix permet une communication entre deux sockets situées sur une même machine Unix, comme le nom l indique. Le mécanisme d adressage qu il défini alors est basé sur le mécanisme de nomage des fichiers qui permet de fournir une référence globale et unique au système. Le domaine unix est désigné par la macro AF UNIX (pour Address Family Unix). 6

7 Le domaine Internet Le domaine Internet permet quand à lui une communication entre deux entités situées sur des machines interconnectées par un réseau TCP/IP. Le mécanisme d adressage alors mis en œuvre se base naturellement sur celui des adresses IP. Nous verrons un peu plus loin en quoi il le complète, patience! Ce domaine est désigné par la macro AF INET Notion de socket Nous voyons sur la figure 4 qu une socket est une entité appartenant à un processus. Ainsi le processus P1 possède deux sockets nommées S1 et S2. Seul le processus ayant créé une socket peut la manipuler 1. Définition 2 Une socket est une entité élémentaire permettant d établir une communication entre deux processus. Il faut ici véritablement voir la socket comme un point de communication, c est à dire un objet permettant de dialoguer avec le monde extérieur. Dans le cadre de nos communications téléphoniques, la socket est donc à comparer à la prise téléphonique. En C, la fonction socket(), que nous décrirons en 3.1 permet de créer une socket. Type d une socket Le type d une socket défini tout simplement le mode de communication que va permettre cette socket, c est à dire une communication avec connexion ou une communication sans connexion. Dans le cas d une communication orientée connexion orientée connexion, le type de la socket est représenté par la macro SOCK STREAM (en anglais stream signifie flux) Dans le cas d une communication orientée datagramme, c est la macro SOCK DG- RAM qui est utilisée Notion d adresse Le but d une socket est de permettre au processus qui l a créé de communiquer avec d autres processus. Pour cela, il est donc nécessaire que ces autres processus soient capables de désigner cette socket, ce qui sera possible grâce au mécanisme d adresse. Définition 3 Une adresse est une désignation universelle et non ambigue à l intérieur d un domaine. Une telle notion d adresse est à comparer avec l adresse postale de notre courrier traditionnel ou avec les numéros de téléphone de notre système téléphonique Notion de liaison Socket et adresse sont deux notions distinctes ; il est nécessaire de les mettre en relation. C est le but de ce que nous apellerons ici une liaison. Définition 4 Nous appellerons ici liaison la simple association entre une socket appartenant à un processus et une adresse. 1 En toute rigueur, ceci n est pas tout à fait vrai, puisque les sockets, au même titre que les descripteurs de fichiers, sont héritées par les processus fils du processus qui les a créé. 7

8 Ce mécanisme permet donc désormais à la socket d être désignée par d autres processus que celui qui l a créé. Il est l équivalent du branchement de notre poste téléphonique (la socket) sur le réseau téléphonique choisi (le domaine) et plus précisément de l association d un numéro de téléphone officiel (l adresse). Notons qu il n est pas nécéssaire d assigner une adresse à une socket qui ne doit être impliquée que dans des communications établies à son initiative, (ou plus précisément à l initiative du processus qui l a créé) Notion de connexion Les sockets permettent des communications avec ou sans connexion. Dans le premier cas, cette notion doit être définie. Définition 5 Une connexion est la mise en relation de deux sockets par l établissement d un chemin de données, physique ou réel, entre ces deux sockets. J ai choisi ici de représenter (dans la figure 4) chaque connexion entre les adresses associées aux sockets plutôt qu entre les sockets elles-mêmes. C est en effet par le biais de ces adresses que ce font les connexions. Notons également qu il est possible de construire une pseudo connexion entre deux sockets communiquant en mode non connecté. Une telle pseudo connexion permet en fait uniquement de s affranchir des problèmes de répétition de l addresse du destinataire. Ainsi, sur la figure 4, chaque fois que le processus P2 souhaite envoyer un message vers la socket S1 du processus P4, il lui suffit d émettre via sa socket S2 qui est pseudo connectée à la socket souhaitée dont il n a donc plus à préciser l adresse. Attention à ne pas vous laisser abuser par le terme de pseudo connexion. Il ne s agit que d une facilité de programmation. Il n existe aucune entité, pas plus virtuelle que réelle, entre deux sockets pseudo connectées Notion de message Dans le cas d une communication sans connexion, le dialogue entre les deux entités communicantes est basée sur la notion de message. Définition 6 Un message est un ensemble d informations envoyé par une entité à destination d une autre. 2.3 Principales étapes Résumons rapidement les principales étapes que doit franchir un processus désireux de communiquer grâce aux sockets : Création Avant toute chose, la socket doit être créée. Il s agit d une ressource locale au processus. Cette opération peut être comparée à l acquisition d un combiné téléphonique. La socket est caractérisée dès sa création par un type, un domaine et un protocole. Nommage Si le processus est susceptible de recevoir des informations à l initiative d autres processus, il doit obtenir du service utilisé une adresse qui sera liée à cette socket. Le principe est à peu près le même que lorsque vous demandez à votre opérateur téléphonique un numéro auquel on pourra vous joindre. Cependant, l obtention d une telle adresse n est pas nécéssaire pour une socket qui ne sera utilisée que pour des communications à l initiative du processus qui l a créé. 8

9 Connexion Dans le cas d une communication avec connexion, cette dernière doit ètre établie. Dans le cas contraire, une pseudo connexion peut éventuellement être établie. Communication Des échanges d informations peuvent ensuite avoir lieu via cette socket. Dans le cas d une communication orientée connexion, la connexion doit d abord être établie, puis elle sera désactivée à la fin des échanges. Destruction Lorsqu elle n est plus utile, la socket peut enfin être détruite. Si jusque là tout est clair pour vous, c est gagné! Nous pouvons maintenant commencer à regarder à quoi tout cela ressemble une fois écrit en code C. Mais attention, les véritables explications s arrètent ici. Si quelquechose n est pas clair pour vous dans les quelques pages qui précèdent, relisez, inutile de passer à la suite, elle ne vous apportera rien... Si, en revanche, tout est OK, et bien continuons! 3 Manipulation des sockets Si vous avez bien suivi ce que je viens de vous raconter, la manipulation des sockets ne devrait vous poser aucun problème particulier. Avant de rentrer dans les détails techniques, qui sont finalement d un intérêt limité, regardons rapidement la structure générale. 3.1 Création d une socket La création d une socket est réalisée par l appel système suivant : int socket(int domaine, int type, int protocole); L entier retourné est l identificateur de la socket. Les noms des différents paramètres parlent d eux mêmes. Différentes macros prédéfinies permettent de choisir d une part le domaine, ce sont par exemple AF UNIX pour le domaine Unix et AF INET pour le domaine Internet, et d autre part le type de la socket, par exemple SOCK STREAM pour les sockets en mode connecté et SOCK DGRAM pour les sockets en mode datagramme. Il existe d autres macros, mais nous ne nous intéresserons ici qu à celles-ci. Jetez un œuil aux pages de manuel et aux fichiers inclus si vous voulez décourvir les autres. Le troisième paramètre de cette fonction, nommé protocole, permet, lorsque cela est possible, de choisir le protocole à mettre en œuvre. Il n existe cependant en général qu un seul protocole capable de fournir un service du type demandé dans le domaine choisi, c est pourquoi nous utiliserons généralement la valeur PF UNSPEC qui précise au système que l on souhaite utiliser le protocole par défaut. La fonction socket renvoie un entier qui est l identificateur de la socket, ou en cas d erreur, auquel cas la variable errno est positionnée. Exemple. Voici un appel classique à la fonction socket ; ici pour créer une socket Unix en mode connecté : /* */ /* CreerSocket.c : création d une socket. */ /* */ #include <sys/socket.h> int main() { int sockdesc; // Identificateur de la socket if ((sockdesc = socket(af_unix, SOCK_STREAM, PF_UNSPEC)) == -1) { 9

10 perror("socket "); exit(-1); printf("socket %d créée.\n", sockdesc); return 0; Compilons-le et exécutons-le : $ cc CreerSocket.c -o CreerSocket -lsocket $./CreerSocket Socket 3 créée. $ Attention, les options de compilation, et plus particulièrement les librairires nécessaires (ici socket) peuvent différer suivant le système. Notons que, tel quel, ce programme n est d aucune utilité! Nous allons voir petit à petit la suite de cet exemple avant de pouvoir l utiliser véritablement. 3.2 Nommage Comme je l ai déjà dit, si le processus créateur d une socket souhaite pouvoir être contacté via cette socket, il doit obtenir une adresse globale au domaine. Pour cela, il doit d abord construire une description de l adresse souhaitée, puis demander au système d assigner cette adresse à la socket voulue, si cela est possible. Il y a donc là une petite particularité puisque le processus peut, dans une certaine mesure, choisir l adresse de sa socket. Je dis bien dans une certaine mesure, parce que le système peut éventuellement refuser une telle adresse, par exemple si elle est déjà utilisée, comme nous le verrons en Description de l adresse La description de l adresse souhaitée par le processus est relativement dépendante du domaine de la socket chaque domaine ayant son mécanisme d adressage propre. Elle consiste cependant dans chaque cas à remplir simplement les champs d une structure C. Les types permettant de définir les adresses sont construits d une façon évoquant l héritage des langages objets ; la structure générale d une adresse est donnée par le type suivant : struct sockaddr { short sa_family; char sa_vide[14]; ; La seule chose intéressante dans cette structure particulièrement simple est le champs family qui définit le domaine (la famille) de la socket. Cas d une socket Unix struct sockaddr_un { short sun_family; char sun_path[108]; ; Une adresse de socket Unix est défini par le type suivant 10

11 L initialisation d une telle structure est donc relativement évidente ; le champ family doit recevoir la valeur AF UNIX et dans le champ PATH doit être mis le nom d un fichier qui sera créé, si nécessaire, lorsque la socket sera liée à cette adresse. Notons que cette création est automatique. Exemple. Les quelques lignes suivantes montrent la déclaration puis la construction d une adresse de type Unix : #include <sys/un.h>... struct sockaddr_un * adresseunix;... adresseunix = (struct sockaddr_un *) malloc(sizeof(struct sockaddr_un)); adresseunix->sun_family = AF_UNIX; strcpy(adresseunix->sun_path, "socket_unix");... Cas d une socket Internet La structure décrivant l adresse d une telle socket est légèrement plus complexe (elle est définie dans /usr/include/netinet/in.h) : struct sockaddr_in { short sin_family; u_short sin_port; struct in_addr sin_addr; char sin_zero[8]; ; où la structure in addr peut être définie de la façon suivante : struct in_addr { unsigned int s_addr; ; Son initialisation, quoiqu un peu plus difficile que dans le cas précédent, reste finalement assez simple : Le champ family doit bien entendu être initialisé à AF INET. L adresse proprement dite est décrite par le couple (adresse IP, port). Plusieurs possibilitées s offrent à nous pour initialiser chacun de ces deux champs. Commençons par l adresse IP. Il s agit a priori de l adresse de la machine sur laquelle s exécute le processus ; elle peut alors être obtenue grâce aux fonctions gethostname() puis gethostbyname() que nous détaillerons plus précisément dans la section 5. Cependant, l adresse peut également être laissée non spécifiée, grâce à la valeur prédéfinie INADDR ANY. En ce qui concerne le numéro de port, celui-ci peut être choisi par le programmeur (c est un entier sur 16 bits), mais seules les valeurs supérieures à 1024 sont utilisables par un utilisateur normal (c est à dire différent de root). Le port peut également être attribué par le système, pour cela, il suffit au programmeur de spécifier la valeur nulle. Exemple. Voici les étapes essentielles de la construction d une adresse de type Internet : 11

12 #include <netinet/in.h>... struct sockaddr_in * adresseinet;... adresseinet = (struct sockaddr_in *) malloc(sizeof(struct sockaddr_in)); adresseinet->sin_family = AF_INET; adresseinet->sin_port = numerodeport; adresseinet->sin_addr = adresseip;... Nous verrons par la suite comment obtenir l adresse IP de même que le numéro de port Liaison de l adresse à la socket Une fois la socket et son adresse créées, il est néssaire les lier entre elles. Ceci est réalisé par la fonction bind dont voici l interface : int bind(int socket, const struct sockaddr *address, size_t address_len) où socket est l identificateur de la socket, address l adresse à laquelle elle doit être liée, et address len la taille de l adresse. Il est en effet nécessaire de préciser cette taille puisqu elle diffère d un domaine à l autre. Exemple. Voici comment lier une socket à une adresse du domaine Unix telle que celle créée précédemment :... if (bind(sockdesc, (struct sockaddr *)adresseunix, sizeof(adresseunix))) { perror("bind"); Établissement d une connexion Comme nous l avons déjà souligné, en mode connecté, la connexion doit être établie avant toute communication. Pour cela, nous avons à notre disposition la fonction connect dont l interface est la suivante : int connect(int socket, const struct sockaddr *address, size_t address_len); Le paramètre socket est, naturellement, l identificateur de la socket à connecter, l adress est celle de la socket avec laquelle on souhaite se connecter. Ainsi dans la figure 4, si le processus P1 souhaite connecter sa socket S1 avec la socket S1 du processus P3, alors l adresse qu il doit passer en paramètre Exemple. Voici comment connecter une socket vers une adresse destination dans le domaine Internet telle que celle créée précédemment : 12

13 ... if (connect(sockdesc, struct sockaddr *)adresseinet, sizeof(struct sockaddr_in)) == -1) { perror("connect "); exit(1);... L adresse passée en paramètre n est pas celle de la socket sockdesc mais celle de la socket destination. Notons encore une fois qu il n est pas nécessaire que la socket S1 du processus P1 soit liée à une adresse puisque la connexion est établie à son initiative. Seule la connaissance (et même l existence) de l est nécessaire. 3.4 Communication Comme on peut s en douter, la communication ne se passe pas tout à fait de la même façon selon le mode de communication choisi En mode non connecté En mode non connecté, nous l avons déjà dit, il est nécessaire de fournir l adresse destination lors de chaque envoi de message. Ces envois sont donc réalisés via une fonction spéciale, qui est la suivante. ssize_t sendto(int socket, const void *message, size_t length, int flags, const struct sockaddr *dest_addr, size_t dest_len); La signification des différents paramètres est la suivante : socket est, bien sûr, la socket via laquelle nous comptons émettre le paquet. message est un pointeur vers les données à émettre. length est la taille du message (en octets). flags permet de caractériser le message. Ainsi la valeur MSG_OOB stipule que le message est out-of band (dont la signification dépend du protocole utilisé). dest_addr est l adresse de destination (vers laquelle doit être envoyé le message). dest_len est la taille de dest_addr. La valeur de retour de la fonction est le nombre d octets réellement émis, ou -1 en cas d erreur (errno est alors positionné). Exemple. Les quelques lignes suivantes permettent d envoyer un message sur une socket de type Internet en mode non connecté : char * buffer;... if (sendto(sockdesc, buffer, taillebuffer, 0, (struct sockaddr *)adresseinet, sizeof(struct sockaddr_in)) == -1) { perror("sendto");... L utilisation de cette fonction est donc trés simple. Symétriquement, il existe une fonction permettant de recevoir les messages : 13

14 ssize_t recvfrom(int socket, void *buffer, size_t length, int flags, struct sockaddr *address, size_t *address_len); Les paramètres sont similaires à ceux de sendto(). Notons cependant quelques différences bien légitimes : flags prend des valeurs différentes. Ainsi MSG PEEK permet de consulter un message en attente sans l enlever, MSG_OOB permet de chercher un message out of band, et MSG_WAITALL force l appel à être bloquant jusqu à ce que la totalité des données attendues (ie spécifiées par length soit reçue). address permet de récupérer l adresse de la socket qui a émis le message reçu. Le programmeur doit donc fournir un pointeur vers une zone mémoire allouée de taille suffisante, ou le pointeur nul s il ne souhaite pas cette information. address_len contient la taille (en octets) de address. Exemple. Voici comment recevoir un message sur une socket Internet non connectée :... if (recu = recvfrom(sockdesc, buffer, taillebuffer, 0, (struct sockaddr *)adresseinet, &tailleadr) == -1) { perror("recvfrom"); printf("reçu %d octets de %x\n", recu, adresseinet.sin_addr.s_addr);... Nous voyons dans cet exemple que nous pouvons connaitre l adresse de la machine émetrice grâce à l adresse que fournit la fonction recvfrom(). Notons qu en mode non connecté il est possible, comme nous l avons déjà souligné, de profiter de la souplesse de la communication en mode connecté, grâce à la notion de pseudo-connexion. Ainsi ce qui suit s applique également à la communication en mode non connecté En mode connecté Au sein d un processus, une socket est désignée par un descripteur identique à ceux des fichiers ouverts classiques et elle peut donc, losrqu il n y a pas d ambiguité sur l adresse destination, être utilisée avec les mêmes fonctions d entrée - sortie, c est à dire avec les fonctions read() et write(). L utilisation de ces fonctions n est cependant possible que lorsque la socket est connectée ou pseudo connectée. 3.5 Fermeture Les sockets sont fermées par l appel système close(), comme tout fichier ouvert. En fait, il est également possible de réaliser une semi-fermeture sur une socket en mode connecté full duplex grâce à la fonction suivante : int shutdown(int s, int how); 14

15 où s est la socket sur laquelle réaliser la fermeture, et how prend l une des valeurs suivantes : 0 pour fermer la socket en réception ; 1 pour fermer la socket en émission ; 2 pour fermer la socket en réception et en émission. La valeur de retour est 0 en cas de succès, -1 en cas d échec, les codes d erreur possibles sont alors EBADF si s n est pas un descripteur valide ; ENOTSCOK si s n est pas un descripteur de socket ; ENOTCONN si la socket n est pas connectée. 3.6 Paramétrage Du fait de leur nature, le paramétrage des sockets peut être réalisé de plusieurs façons ; elles peuvent d une part être manipulées en tant que socket, afin de tirer véritablement partie de leurs spécificités, et d autre par en tant que fichier, afin de configurer leur comportement en temps que tel. Nous allons donc observer ici ces deux façons de paramétrer une socket En tant que socket La configuration d une socket peut être consultée et modifiée par le biais des appels système suivants : int getsockopt(int s, int level, int optname, void *optval, socklen_t *optlen); int setsockopt(int s, int level, int optname, const void *optval, socklen_t optlen); Les paramètres de ces fonctions ont la signification suivante : s est, bien sûr, le descripteur de la socket concernée ; level doit ici prendre la valeur SOL_SOCKET afin de préciser que l on souhaite intervenir au niveau de la socket (d autres valeurs permettent d intervenir par exemple au niveau des protocoles manipulés) ; optname est le nom de l option à modifier ; optval est un pointeur contenant la valeur de l option (en entrée ou en sortie selon la fonction utilisée) ; optlen précise la taille de la zone mémoire pointée par optval, la fonction getsockopt() y place la taille réellement utilisée par la valeur renvoyée dans optval. La valeur de retour est 0 en cas de succès, et -1 en cas d erreur, auquel cas errno prend une valeur parmi les suivantes : EBADF si s n est pas un descripteur valide ; ENOTSCOK si s n est pas un descripteur de socket ; ENOPROTOOPT si l option est inconnue ; EFAULT si l un des pointeurs passés est incorrect. Nous n allons pas donner ici la liste de toutes les valeurs possibles pour le paramètre optname, nous vous invitons pour cela à consulter le manuel en ligne ; observons simplement quelques valeurs : 15

16 SO_REUSEADDR permet de spécifier que l adresse locale liée à cette socket peut être réutilisée immédiatement (en fait dès qu elle ne sera plus utilisée) par l appel système bind() ; ceci permet en particulier d éviter le problème posé par l état 2MSL des socket IP en mode connecté. SO_TYPE (en consultation uniquement) permet d obtenir le type d une socket. SO_SNDBUF permet de modifier ou consulter la taille du buffer d émission. SO_RCVBUF permet de modifier ou consulter la taille du buffer de réception En tant que fichier Comme tout fichier, une socket peut être manipulé par l appel système suivant #include <unistd.h> #include <fcntl.h> int fcntl(int fd, int cmd); int fcntl(int fd, int cmd, long arg); où fd est le descripteur de la socket ; cmd est la commande à appliquer ; arg est l éventuel argument de la commande. Observons ici aussi quelques commandes (vous trouverez les autres dans le manuel en ligne) : F_GETFL permet de consulter les drapeaux associés au fichier lors de son ouverture ou par la suite grâce à la commande suivante. F_SETFL permet de modifier les drapeaux associés à un fichier ; l ajout du drapeau O_NONBLOCK permet par exemple de faire en sorte que les entrées-sorties soient non bloquantes (un appel à read() ou write() terminera immédiatement avec EAGAIN). 4 Manipulation avancée Le but de cette section est de montrer plus précisément comment intégrer les différentes fonctions précédemment décrites dans un programme C classique. Nous nous baserons pour cela sur la traditionnelle architecture client serveur. 4.1 Modèle client-serveur Le modèle client-serveur repose sur la notion de service. Un serveur est alors une entité susceptible de fournir un service à un client. Ce service est rendu à ce dernier suite à une requête de sa part (figure 5). Un même serveur peut naturellement satisfaire des requêtes émanant de multiples clients. Serveur Requète Service Client FIG. 5 Le modèle client serveur Les avantages de ce modèle sont nombreux et largement reconnus. Notons simplement ici l intérèt qu il peut y avoir à centraliser certaines opérations sur un seul 16

17 serveur accédé par de nombreux clients et à utiliser ce serveur au travers d un réseau. En ce qui nous concerne, clients et serveurs seront implémentés par des processus communiquants, et les requêtes et leurs réponses seront véhiculées par des communiations via le mécanisme des sockets. On parle fréquemment de serveur pour parler d un processus rendant un service selon le modèle décrit ici, mais également pour parler de la machine sur laquelle s exécute ce processus. Attention donc à ne pas vous laisser tromper par cette ambiguité Mode connecté Pour comprendre la mise en œuvre (et le fonctionnement) d une architecture client serveur en mode connecté, une petite analogie avec les moyens de communication traditionnels peut être à nouveau utile. Considérons le service téléphonique d une entreprise (un service de hot-line ). Ce service possède un numéro de téléphone, connu de ses clients potientiels, derrière lequel se trouve un standard qui fait éventuellement patienter les clients puis les redirige vers un poste libre qui traite la requête. La mise en œuvre d un serveur basé sur des sockets en mode connecté est trés similaire. Le serveur est identifié par l adresse de sa socket, sur laquelle se connectent les clients. Pour chaque nouveau client le serveur lance un nouveau processus (ou un thread) qui traite la requête. La figure 6 donne l algorithme général d un serveur en mode connecté. Initialisation Déclaration Attente Création processus Père Fils Traitement FIG. 6 Algorithme général d un serveur L initialisation des outils de communication passe par les mécanismes que nous avons vu précédemment. Il n y a donc rien de nouveau à ce stade. La déclaration du serveur lui permet d informer le système du fait qu il est prêt à accepter des connexions et de stipuler le nombre maximal de connexions en attente. Le serveur se place alors en attente de demande de connexion. À Chaque demande, le système le libère de cette attente et crée une nouvelle socket. C est cette nouvelle socket qui est connectée avec celle du client, et non la socket initialement créée par le serveur. Le serveur crée alors un nouveau fil d exécution (processus lourd ou thread) chargé de traiter la requête du client puis se remet en attente d une nouvelle demande de connexion. 17

18 L algorithme d un client est quand à lui extrèmement simple puisque ce dernier se contente d initialiser les moyens de communication puis de tenter d établir une connexion avec le serveur. Une petite difficulté apparait cependant du fait de la dissymétrie des rôles joués par le client et le serveur. Les opérations d initialisation semblent naturelles sur le serveur : on crée une socket, on construit une adresse pour cette socket puis on les lie. Mais beaucoup de programmeurs sont troublés lorsqu ils passent ensuite au client (la première fois en tous cas) par le fait qu il faut là encore créer une socket puis créer une adresse et ensuite non pas lier ces entités mais établir une connexion. En effef ce n est pas l adresse de la socket locale qui est initialisée mais celle de la socket du serveur. Si ce comportement est parfaitement logique (pour établir une communication avec une entité, il faut fournir l adresse de cette entité et non celle de l entité appelante), il semble perturbant pour certains programmeurs. Voyons maintenant comment programmer cela Construction d un serveur Un serveur est un processus qui attend patiemment que d autres processus (les clients) le contactent pour lui demander un service. Cette attente du serveur doit être signalée par ce dernier au système d exploitation. Exemple. Nous allons écrire le code d un minuscule serveur Web. Ce programme ne remplit naturellement pas toutes les fonctions d un serveur Web, mais il permet toutefois déjà de parcourir quelques pages HTML ne faisant intervenir que des requêtes de documents (commande GET du protocole HTTP). Commençons par les déclarations : /* Micro serveur HTTP. Ce serveur ne comprend */ /* que la requète GET, et la traite de façon trés */ /* primaire. */ #include <stdio.h> #include <stdlib.h> #include <unistd.h> #include <string.h> #include <sys/socket.h> #include <netinet/in.h> #include <netdb.h> #include <fcntl.h> #include <signal.h> /* * Taille du buffer de lecture */ #define TAILLE_BUFFER 512 /* * Nombre max de connexions pendantes */ #define NB_MAX_PENDANTES 5 /* * Format d un message d erreur. */ #define FORMAT_ERREUR \ "<HTML><BODY><H1>%s</H1></BODY></HTML>\n" La fonction suivante permet d envoyer un message d erreur (formaté en HTML de façon trés primitive) vers le serveur via la socket passée en paramètre : 18

19 /* Affichage d une erreur. */ void erreur(int fd, char * msg) { char * message = (char *)malloc(strlen(format_erreur) + strlen(msg)); sprintf(message, FORMAT_ERREUR, msg); write(fd, message, strlen(message)); free(message); Voici maintenant la procédure de service, c est à dire le cœur du programme puisque c est cette fonction qui est chargée du dialogue avec le client et qui doit satisfaire la requête de ce dernier : /* La procédure de service. */ void serveur(int sd) { char * buffer = (char *)malloc(taille_buffer); int fd, lu; char * nomfichier; char * strptr; // Nécessaire à strtok_r /* Lecture de la requête du client */ if (read(sd, buffer, TAILLE_BUFFER) <= 0) { erreur(sd, "Problème de communication"); close(sd); return; /* On ne gère que le GET */ if (strncmp(buffer, "GET ", 4)) { erreur(sd, "Requète incompréhensible"); close(sd); return; /* Extraction (affreuse) du nom du fichier */ strtok_r(buffer, " ", &strptr); // "GET" nomfichier = strtok_r(null, " ", &strptr); /* On supprime le / initial */ nomfichier++; printf("fichier \"%s\"\n", nomfichier); /* Ouverture du fichier voulu */ if ((fd = open(nomfichier, O_RDONLY)) == -1) { erreur(sd, "Impossible de lire ce fichier"); erreur(sd, nomfichier); close(sd); return; /* Envoie du fichier */ lu = read(fd, buffer, TAILLE_BUFFER); while (lu > 0) { write(sd, buffer, lu); lu = read(fd, buffer, TAILLE_BUFFER); free(buffer); Comme vous pouvez le constater, le fonctionnement de cette procédure est 19

20 réduit à sa plus simple expression. Nous pouvons maintenant écrire la fonction principale de notre programme. Dans un premier temps il nous faut créer la socket d attente, c est à dire le standard téléphonique de notre service, puis la lier à une adresse : /* Le programme principal. */ int main() { int sockattente, socktravail; struct sockaddr_in adresse; int longadr; int resfork; struct sigaction sigchldaction; /* On ignore la terminaison des processus fils */ sigchldaction.sa_handler = SIG_IGN; sigemptyset(&sigchldaction.sa_mask); sigchldaction.sa_flags = SA_NOCLDSTOP; if (sigaction(sigchld, &sigchldaction, NULL)) { perror("sigaction"); exit(1); /* On ouvre une oreille... */ if ((sockattente = socket(af_inet, SOCK_STREAM, 0)) == -1) { perror("socket"); exit(2); /* Construction de l adresse */ bzero(&adresse, sizeof(adresse)); adresse.sin_port = 0; adresse.sin_addr.s_addr = INADDR_ANY; adresse.sin_family = AF_INET; /* Liaison de l adresse */ if (bind(sockattente, (struct sockaddr *)&adresse, sizeof(adresse))) { perror("bind"); exit(3); /* Lecture des infos sur l adresse */ longadr = sizeof(adresse); if (getsockname(sockattente, (struct sockaddr *)&adresse, &longadr)) { perror("getsockname"); exit(4); Puisque nous avons choisi ici de laisser le système nous attribuer un numéro de port, nous devons rendre celui-ci public avant d ouvrir officiellement le service (via la fonction accept()). Chaque requête est ensuite traitée par un nouveau processus : /* On écoute... */ if (listen(sockattente, NB_MAX_PENDANTES)) { perror("listen"); exit(4); printf("attente sur le port %d\n", htons(adresse.sin_port)); 20

Applications client/serveur TCP/IP - Sockets Rappels. C.Crochepeyre Applications CS 1

Applications client/serveur TCP/IP - Sockets Rappels. C.Crochepeyre Applications CS 1 Applications client/serveur TCP/IP - Sockets Rappels C.Crochepeyre Applications CS 1 PLAN Modèle client/serveur Modèle ISO et protocole TCP/IP Comment ça marche? La programmation: les sockets Exemples

Plus en détail

1. Fonctionnement de l Internet 2. Protocoles applicatifs 3. Programmation réseau

1. Fonctionnement de l Internet 2. Protocoles applicatifs 3. Programmation réseau 1. Fonctionnement de l Internet 2. Protocoles applicatifs 3. Programmation réseau Fonctionnement de l Internet Fonctionnement de l Internet Basé sur une architecture TCP/IP du nom des deux principaux protocoles

Plus en détail

Programmation système de commandes en C

Programmation système de commandes en C Programmation système de commandes en C Cours de Programmation système Tuyêt Trâm DANG NGOC Université de Cergy-Pontoise 2012 2013 Tuyêt Trâm DANG NGOC Programmation système de commandes

Plus en détail

Communication par sockets

Communication par sockets Rappel : le réseau vu de l!utilisateur (1) Communication par sockets Sacha Krakowiak Université Joseph Fourier Projet Sardes (INRIA et IMAG-LSR) http://sardes.inrialpes.fr/~krakowia (demande un service)

Plus en détail

Cours 6 : Tubes anonymes et nommés

Cours 6 : Tubes anonymes et nommés Cours 6 : Tubes anonymes et nommés Mécanisme de communications du système de fichiers I-node associé. Type de fichier: S_IFIFO. Accès au travers des primitives read et write. Les tubes sont unidirectionnels

Plus en détail

Programmation Réseau. Anthony Busson IUT Info Lyon 1

Programmation Réseau. Anthony Busson IUT Info Lyon 1 Programmation Réseau Anthony Busson IUT Info Lyon 1 Plan du cours Introduction Rôles du système et des applications Rappel TCP-IP Panorama des langages Couche socket : introduction Panorama de la couche

Plus en détail

3IS - Système d'exploitation linux - Programmation système

3IS - Système d'exploitation linux - Programmation système 3IS - Système d'exploitation linux - Programmation système 2010 David Picard Contributions de : Arnaud Revel, Mickaël Maillard picard@ensea.fr Environnement Les programmes peuvent être exécutés dans des

Plus en détail

Plan global. Programmation système II. Socket du domaine UNIX. Plan. Socket UNIX, Terminaux, Async IO, Mémoire, ELF.

Plan global. Programmation système II. Socket du domaine UNIX. Plan. Socket UNIX, Terminaux, Async IO, Mémoire, ELF. Programmation système II Socket UNIX, Terminaux, Async IO, Mémoire, ELF Timothée Ravier LIFO, INSA-CVL, LIPN 1 re année cycle ingénieur STI 2013 2014 Plan global 1 Socket UNIX 2 Terminaux 3 Autres modèles

Plus en détail

Travaux Pratiques Introduction aux réseaux IP

Travaux Pratiques Introduction aux réseaux IP Université de Savoie Initiation aux réseaux IP Travaux Pratiques Introduction aux réseaux IP Sylvain MONTAGNY sylvain.montagny@univ-savoie.fr Bâtiment chablais, bureau 13 04 79 75 86 86 TP1 : Analyse la

Plus en détail

DUT Informatique Module Système S4 C Département Informatique 2009 / 2010. Travaux Pratiques n o 5 : Sockets Stream

DUT Informatique Module Système S4 C Département Informatique 2009 / 2010. Travaux Pratiques n o 5 : Sockets Stream iut ORSAY DUT Informatique Département Informatique 2009 / 2010 Travaux Pratiques n o 5 : Sockets Stream Nom(s) : Groupe : Date : Objectifs : manipuler les primitives relatives à la communication par sockets

Plus en détail

Programmation système I Les entrées/sorties

Programmation système I Les entrées/sorties Programmation système I Les entrées/sorties DUT 1 re année Université de Marne La vallée Les entrées-sorties : E/O Entrées/Sorties : Opérations d échanges d informations dans un système informatique. Les

Plus en détail

LA COUCHE TRANSPORT CONTRÔLE LE FLOT DE DONNEES TRANSMISES par la couche Réseau

LA COUCHE TRANSPORT CONTRÔLE LE FLOT DE DONNEES TRANSMISES par la couche Réseau M1 Informatique Réseaux Cours 6 Couche Transport : TCP et UDP Notes de Cours LA COUCHE TRANSPORT CONTRÔLE LE FLOT DE DONNEES TRANSMISES par la couche Réseau dans le but d offrir des garanties de service

Plus en détail

Développement d un logiciel de messagerie instantanée avec Dotnet (version simplifiée)

Développement d un logiciel de messagerie instantanée avec Dotnet (version simplifiée) Développement d un logiciel de messagerie instantanée avec Dotnet (version simplifiée) Propriétés Description Intitulé long Formation concernée Matière Présentation Développement d un logiciel de messagerie

Plus en détail

Introduction à la Programmation Parallèle: MPI

Introduction à la Programmation Parallèle: MPI Introduction à la Programmation Parallèle: MPI Frédéric Gava et Gaétan Hains L.A.C.L Laboratoire d Algorithmique, Complexité et Logique Cours du M2 SSI option PSSR Plan 1 Modèle de programmation 2 3 4

Plus en détail

1. Structure d un programme C. 2. Commentaire: /*..texte */ On utilise aussi le commentaire du C++ qui est valable pour C: 3.

1. Structure d un programme C. 2. Commentaire: /*..texte */ On utilise aussi le commentaire du C++ qui est valable pour C: 3. 1. Structure d un programme C Un programme est un ensemble de fonctions. La fonction "main" constitue le point d entrée pour l exécution. Un exemple simple : #include int main() { printf ( this

Plus en détail

Les structures. Chapitre 3

Les structures. Chapitre 3 Chapitre 3 Les structures Nous continuons notre étude des structures de données qui sont prédéfinies dans la plupart des langages informatiques. La structure de tableau permet de regrouper un certain nombre

Plus en détail

Cours Programmation Système

Cours Programmation Système Cours Programmation Système Filière SMI Semestre S6 El Mostafa DAOUDI Département de Mathématiques et d Informatique, Faculté des Sciences Université Mohammed Premier Oujda m.daoudi@fso.ump.ma Février

Plus en détail

UE Programmation Impérative Licence 2ème Année 2014 2015

UE Programmation Impérative Licence 2ème Année 2014 2015 UE Programmation Impérative Licence 2 ème Année 2014 2015 Informations pratiques Équipe Pédagogique Florence Cloppet Neilze Dorta Nicolas Loménie prenom.nom@mi.parisdescartes.fr 2 Programmation Impérative

Plus en détail

EPREUVE OPTIONNELLE d INFORMATIQUE CORRIGE

EPREUVE OPTIONNELLE d INFORMATIQUE CORRIGE EPREUVE OPTIONNELLE d INFORMATIQUE CORRIGE QCM Remarque : - A une question correspond au moins 1 réponse juste - Cocher la ou les bonnes réponses Barème : - Une bonne réponse = +1 - Pas de réponse = 0

Plus en détail

Programmation Internet en Java

Programmation Internet en Java Chapitre 8 Programmation Internet en Java Vous avez déjà utilisé Internet, le plus connu des inter-réseaux mondiaux d ordinateurs et quelques-uns de ses services, en particulier le web et le courrier électronique.

Plus en détail

Processus! programme. DIMA, Systèmes Centralisés (Ph. Mauran) " Processus = suite d'actions = suite d'états obtenus = trace

Processus! programme. DIMA, Systèmes Centralisés (Ph. Mauran)  Processus = suite d'actions = suite d'états obtenus = trace Processus 1) Contexte 2) Modèles de Notion de Points de vue Modèle fourni par le SX Opérations sur les 3) Gestion des Représentation des Opérations 4) Ordonnancement des Niveaux d ordonnancement Ordonnancement

Plus en détail

1/24. I passer d un problème exprimé en français à la réalisation d un. I expressions arithmétiques. I structures de contrôle (tests, boucles)

1/24. I passer d un problème exprimé en français à la réalisation d un. I expressions arithmétiques. I structures de contrôle (tests, boucles) 1/4 Objectif de ce cours /4 Objectifs de ce cours Introduction au langage C - Cours Girardot/Roelens Septembre 013 Du problème au programme I passer d un problème exprimé en français à la réalisation d

Plus en détail

Network musical jammin

Network musical jammin Network musical jammin Projet PC2R - 2015 Pour ce projet, nous allons réaliser une application permettant d effectuer des jams sessions en temps-réel entre des musiciens répartis à travers le monde. Le

Plus en détail

INTRODUCTION A JAVA. Fichier en langage machine Exécutable

INTRODUCTION A JAVA. Fichier en langage machine Exécutable INTRODUCTION A JAVA JAVA est un langage orienté-objet pur. Il ressemble beaucoup à C++ au niveau de la syntaxe. En revanche, ces deux langages sont très différents dans leur structure (organisation du

Plus en détail

Programmation système en C/C++

Programmation système en C/C++ Programmation système en C/C++ Jean-Baptiste Vioix (jb.vioix@free.fr) LE2I - ENESAD http://jb.vioix.free.fr 1-41 Programmation en C/C++ sous Unix Il existe des très nombreux outils de développement sous

Plus en détail

Éléments d informatique Cours 3 La programmation structurée en langage C L instruction de contrôle if

Éléments d informatique Cours 3 La programmation structurée en langage C L instruction de contrôle if Éléments d informatique Cours 3 La programmation structurée en langage C L instruction de contrôle if Pierre Boudes 28 septembre 2011 This work is licensed under the Creative Commons Attribution-NonCommercial-ShareAlike

Plus en détail

Utilisation d objets : String et ArrayList

Utilisation d objets : String et ArrayList Chapitre 6 Utilisation d objets : String et ArrayList Dans ce chapitre, nous allons aborder l utilisation d objets de deux classes prédéfinies de Java d usage très courant. La première, nous l utilisons

Plus en détail

Cours d initiation à la programmation en C++ Johann Cuenin

Cours d initiation à la programmation en C++ Johann Cuenin Cours d initiation à la programmation en C++ Johann Cuenin 11 octobre 2014 2 Table des matières 1 Introduction 5 2 Bases de la programmation en C++ 7 3 Les types composés 9 3.1 Les tableaux.............................

Plus en détail

Programmation impérative

Programmation impérative Programmation impérative Cours 4 : Manipulation des fichiers en C Catalin Dima Organisation des fichiers Qqs caractéristiques des fichiers : Nom (+ extension). Chemin d accès absolu = suite des noms des

Plus en détail

Conventions d écriture et outils de mise au point

Conventions d écriture et outils de mise au point Logiciel de base Première année par alternance Responsable : Christophe Rippert Christophe.Rippert@Grenoble-INP.fr Introduction Conventions d écriture et outils de mise au point On va utiliser dans cette

Plus en détail

Licence ST Université Claude Bernard Lyon I LIF1 : Algorithmique et Programmation C Bases du langage C 1 Conclusion de la dernière fois Introduction de l algorithmique générale pour permettre de traiter

Plus en détail

Communication inter-processus (IPC) : tubes & sockets. exemples en C et en Java. F. Butelle

Communication inter-processus (IPC) : tubes & sockets. exemples en C et en Java. F. Butelle F. Butelle, E. Viennet, Système GTR2 IUT Paris 3 Communication inter-processus (IPC) : tubes & sockets exemples en C et en Java F. Butelle F. Butelle, E. Viennet, Système GTR2 IUT Paris 3 Java : implémentation

Plus en détail

OS Réseaux et Programmation Système - C5

OS Réseaux et Programmation Système - C5 OS Réseaux et Programmation Système - C5 Rabie Ben Atitallah rabie.benatitallah@univ-valenciennes.fr RPC - XDR Rappel RPC: Remote Procedure Call Besoin d un environnement de haut niveau pour le développement

Plus en détail

Introduction au langage C

Introduction au langage C Introduction au langage C Cours 1: Opérations de base et premier programme Alexis Lechervy Alexis Lechervy (UNICAEN) Introduction au langage C 1 / 23 Les premiers pas Sommaire 1 Les premiers pas 2 Les

Plus en détail

Introduction. Adresses

Introduction. Adresses Architecture TCP/IP Introduction ITC7-2: Cours IP ESIREM Infotronique Olivier Togni, LE2I (038039)3887 olivier.togni@u-bourgogne.fr 27 février 2008 L Internet est basé sur l architecture TCP/IP du nom

Plus en détail

Cahier des charges. driver WIFI pour chipset Ralink RT2571W. sur hardware ARM7

Cahier des charges. driver WIFI pour chipset Ralink RT2571W. sur hardware ARM7 Cahier des charges driver WIFI pour chipset Ralink RT2571W sur hardware ARM7 RevA 13/03/2006 Création du document Sylvain Huet RevB 16/03/2006 Fusion des fonctions ARP et IP. SH Modification des milestones

Plus en détail

TP 2 Réseaux. Adresses IP, routage et sous-réseaux

TP 2 Réseaux. Adresses IP, routage et sous-réseaux TP 2 Réseaux Adresses IP, routage et sous-réseaux C. Pain-Barre INFO - IUT Aix-en-Provence version du 24/2/2 Adressage IP. Limites du nombre d adresses IP.. Adresses de réseaux valides Les adresses IP

Plus en détail

Le langage C. Séance n 4

Le langage C. Séance n 4 Université Paris-Sud 11 Institut de Formation des Ingénieurs Remise à niveau INFORMATIQUE Année 2007-2008 Travaux pratiques d informatique Le langage C Séance n 4 But : Vous devez maîtriser à la fin de

Plus en détail

DE L ALGORITHME AU PROGRAMME INTRO AU LANGAGE C 51

DE L ALGORITHME AU PROGRAMME INTRO AU LANGAGE C 51 DE L ALGORITHME AU PROGRAMME INTRO AU LANGAGE C 51 PLAN DU COURS Introduction au langage C Notions de compilation Variables, types, constantes, tableaux, opérateurs Entrées sorties de base Structures de

Plus en détail

Introduction à la programmation orientée objet, illustrée par le langage C++ Patrick Cégielski cegielski@u-pec.fr

Introduction à la programmation orientée objet, illustrée par le langage C++ Patrick Cégielski cegielski@u-pec.fr Introduction à la programmation orientée objet, illustrée par le langage C++ Patrick Cégielski cegielski@u-pec.fr Mars 2002 Pour Irène et Marie Legal Notice Copyright c 2002 Patrick Cégielski Université

Plus en détail

Bases de programmation. Cours 5. Structurer les données

Bases de programmation. Cours 5. Structurer les données Bases de programmation. Cours 5. Structurer les données Pierre Boudes 1 er décembre 2014 This work is licensed under the Creative Commons Attribution-NonCommercial-ShareAlike 3.0 License. Types char et

Plus en détail

Cours d Algorithmique-Programmation 2 e partie (IAP2): programmation 24 octobre 2007impérative 1 / 44 et. structures de données simples

Cours d Algorithmique-Programmation 2 e partie (IAP2): programmation 24 octobre 2007impérative 1 / 44 et. structures de données simples Cours d Algorithmique-Programmation 2 e partie (IAP2): programmation impérative et structures de données simples Introduction au langage C Sandrine Blazy - 1ère année 24 octobre 2007 Cours d Algorithmique-Programmation

Plus en détail

PROJET ALGORITHMIQUE ET PROGRAMMATION II

PROJET ALGORITHMIQUE ET PROGRAMMATION II PROJET 1 ALGORITHMIQUE ET PROGRAMMATION II CONTENU DU RAPPORT A RENDRE : o Fiche signalétique du binôme o Listing des différents fichiers sources o CD sources o Il sera tenu compte de la présentation du

Plus en détail

INITIATION AU LANGAGE C SUR PIC DE MICROSHIP

INITIATION AU LANGAGE C SUR PIC DE MICROSHIP COURS PROGRAMMATION INITIATION AU LANGAGE C SUR MICROCONTROLEUR PIC page 1 / 7 INITIATION AU LANGAGE C SUR PIC DE MICROSHIP I. Historique du langage C 1972 : naissance du C dans les laboratoires BELL par

Plus en détail

Le prototype de la fonction main()

Le prototype de la fonction main() Le prototype de la fonction main() 1. Introduction...1 2. Paramètres et type de retour de la fonction main()...1 3. Exemple 1...2 4. La fonction exit() du C...2 5. Détecter le code de retour d un programme

Plus en détail

TD n o 8 - Domain Name System (DNS)

TD n o 8 - Domain Name System (DNS) IUT Montpellier - Architecture (DU) V. Poupet TD n o 8 - Domain Name System (DNS) Dans ce TD nous allons nous intéresser au fonctionnement du Domain Name System (DNS), puis pour illustrer son fonctionnement,

Plus en détail

Algorithme. Table des matières

Algorithme. Table des matières 1 Algorithme Table des matières 1 Codage 2 1.1 Système binaire.............................. 2 1.2 La numérotation de position en base décimale............ 2 1.3 La numérotation de position en base binaire..............

Plus en détail

Chapitre 1 : La gestion dynamique de la mémoire

Chapitre 1 : La gestion dynamique de la mémoire Chapitre 1 : La gestion dynamique de la mémoire En langage C un programme comporte trois types de données : Statiques; Automatiques ; Dynamiques. Les données statiques occupent un emplacement parfaitement

Plus en détail

Programmation Réseau. ! UFR Informatique ! 2013-2014. Jean-Baptiste.Yunes@univ-paris-diderot.fr

Programmation Réseau. ! UFR Informatique ! 2013-2014. Jean-Baptiste.Yunes@univ-paris-diderot.fr Programmation Réseau Jean-Baptiste.Yunes@univ-paris-diderot.fr! UFR Informatique! 2013-2014 1 Programmation Réseau Introduction Ce cours n est pas un cours de réseau on y détaillera pas de protocoles de

Plus en détail

Présentation du modèle OSI(Open Systems Interconnection)

Présentation du modèle OSI(Open Systems Interconnection) Présentation du modèle OSI(Open Systems Interconnection) Les couches hautes: Responsables du traitement de l'information relative à la gestion des échanges entre systèmes informatiques. Couches basses:

Plus en détail

Exercice sur les Dockers

Exercice sur les Dockers Exercice sur les Dockers Les parties composant les Dockers: 1 docker daemon: est un démon qui gère les dockers (les conteneurs LXC) qui tournent sur la machine hôte 2 docker CLI: une série de commandes

Plus en détail

DHCP et NAT. Cyril Rabat cyril.rabat@univ-reims.fr. Master 2 ASR - Info09115 - Architecture des réseaux d entreprise 2012-2013

DHCP et NAT. Cyril Rabat cyril.rabat@univ-reims.fr. Master 2 ASR - Info09115 - Architecture des réseaux d entreprise 2012-2013 DHCP et NAT Cyril Rabat cyril.rabat@univ-reims.fr Master 2 ASR - Info09115 - Architecture des réseaux d entreprise 22-23 Cours n 9 Présentation des protocoles BOOTP et DHCP Présentation du NAT Version

Plus en détail

Programmation Réseau en C sous Unix

Programmation Réseau en C sous Unix Chapitre 1 : Notions de base I. Structure d adresse : En programmation réseau, nous allons utiliser les sockets. C est un moyen de communication qui se définit par un port et une adresse. Elle est représentée

Plus en détail

Plan du cours. Historique du langage http://www.oracle.com/technetwork/java/index.html. Nouveautés de Java 7

Plan du cours. Historique du langage http://www.oracle.com/technetwork/java/index.html. Nouveautés de Java 7 Université Lumière Lyon 2 Faculté de Sciences Economiques et Gestion KHARKIV National University of Economic Introduction au Langage Java Master Informatique 1 ère année Julien Velcin http://mediamining.univ-lyon2.fr/velcin

Plus en détail

6 - Le système de gestion de fichiers F. Boyer, UJF-Laboratoire Lig, Fabienne.Boyer@imag.fr

6 - Le système de gestion de fichiers F. Boyer, UJF-Laboratoire Lig, Fabienne.Boyer@imag.fr 6 - Le système de gestion de fichiers F. Boyer, UJF-Laboratoire Lig, Fabienne.Boyer@imag.fr Interface d un SGF Implémentation d un SGF Gestion de la correspondance entre la structure logique et la structure

Plus en détail

Compression de Données - Algorithme de Huffman Document de Conception

Compression de Données - Algorithme de Huffman Document de Conception ROLLET Samuel SALLE Jennifer Compression de Données - Algorithme de Huffman Document de Conception Projet d'algorithmique et Structure des Données 1 SOMMAIRE 1. Domaine d application....4 1.1 Objectifs

Plus en détail

BIND : installer un serveur DNS

BIND : installer un serveur DNS BIND : installer un serveur DNS Cet article a pour but de vous présenter comment installer et configurer un serveur DNS en utilisant l'application BIND. Je supposerai que vous disposez d'un réseau local

Plus en détail

STS SE. FreeRTOS. Programmation réseau WIFI. Programmation réseau. Socket Tcp. FlyPort smart Wi-Fi 802.11 module

STS SE. FreeRTOS. Programmation réseau WIFI. Programmation réseau. Socket Tcp. FlyPort smart Wi-Fi 802.11 module François SCHNEIDER Lycée Victor-Hugo BESANÇON. STS SE FreeRTOS Programmation réseau WIFI Programmation réseau Socket Tcp FlyPort smart Wi-Fi 802.11 module Prérequis : langage C, connaissance réseau : Ip,

Plus en détail

Premiers Pas en Programmation Objet : les Classes et les Objets

Premiers Pas en Programmation Objet : les Classes et les Objets Chapitre 2 Premiers Pas en Programmation Objet : les Classes et les Objets Dans la première partie de ce cours, nous avons appris à manipuler des objets de type simple : entiers, doubles, caractères, booléens.

Plus en détail

Cours 1 : Introduction. Langages objets. but du module. contrôle des connaissances. Pourquoi Java? présentation du module. Présentation de Java

Cours 1 : Introduction. Langages objets. but du module. contrôle des connaissances. Pourquoi Java? présentation du module. Présentation de Java Langages objets Introduction M2 Pro CCI, Informatique Emmanuel Waller, LRI, Orsay présentation du module logistique 12 blocs de 4h + 1 bloc 2h = 50h 1h15 cours, 45mn exercices table, 2h TD machine page

Plus en détail

GENERALITES. COURS TCP/IP Niveau 1

GENERALITES. COURS TCP/IP Niveau 1 GENERALITES TCP/IP est un protocole inventé par les créateurs d Unix. (Transfer Control Protocol / Internet Protocole). TCP/IP est basé sur le repérage de chaque ordinateur par une adresse appelée adresse

Plus en détail

Le filtrage de niveau IP

Le filtrage de niveau IP 2ème année 2008-2009 Le filtrage de niveau IP Novembre 2008 Objectifs Filtrage : Le filtrage permet de choisir un comportement à adopter vis à vis des différents paquets émis ou reçus par une station.

Plus en détail

TP n 2 Concepts de la programmation Objets Master 1 mention IL, semestre 2 Le type Abstrait Pile

TP n 2 Concepts de la programmation Objets Master 1 mention IL, semestre 2 Le type Abstrait Pile TP n 2 Concepts de la programmation Objets Master 1 mention IL, semestre 2 Le type Abstrait Pile Dans ce TP, vous apprendrez à définir le type abstrait Pile, à le programmer en Java à l aide d une interface

Plus en détail

Cours de Système : Gestion de Fichiers

Cours de Système : Gestion de Fichiers Cours de Système : Gestion de Fichiers Bertrand Le cun et Emmanuel Hyon bertrand.le cun{at}u-paris10.fr et Emmanuel.Hyon{at}u-paris10.fr Université Paris Ouest Nanterre 25 octobre 2011 B.L.C. & E.H. (UPO)

Plus en détail

Arguments d un programme

Arguments d un programme Arguments d un programme L2 SPI, Bruno Jacob 1 Arguments Quand on appelle un programme dans un environnement UNIX ou MS- DOS, on compose une ligne de commandes de la forme : nom-du-programme argument1

Plus en détail

TRAVAUX PRATIQUES Programmation Système Langage C / Système UNIX. 2 e année Génie Informatique

TRAVAUX PRATIQUES Programmation Système Langage C / Système UNIX. 2 e année Génie Informatique Communications entre Processus Communication par tubes. TRAVAUX PRATIQUES Programmation Système Langage C / Système UNIX. 2 e année Génie Informatique Exemple 1: On a deux processus Père/Fils. Le père

Plus en détail

2. MAQUETTAGE DES SOLUTIONS CONSTRUCTIVES. 2.2 Architecture fonctionnelle d un système communicant. http://robert.cireddu.free.

2. MAQUETTAGE DES SOLUTIONS CONSTRUCTIVES. 2.2 Architecture fonctionnelle d un système communicant. http://robert.cireddu.free. 2. MAQUETTAGE DES SOLUTIONS CONSTRUCTIVES 2.2 Architecture fonctionnelle d un système communicant Page:1/11 http://robert.cireddu.free.fr/sin LES DÉFENSES Objectifs du COURS : Ce cours traitera essentiellement

Plus en détail

Dynamic Host Configuration Protocol

Dynamic Host Configuration Protocol Dynamic Host Configuration Protocol 1 2 problèmes de gestion avec IP La Gestion des adresses IP Les adresses IP doivent être unique Nécessité d une liste d ordinateurs avec leurs adresses IP respectives

Plus en détail

TP1 : Initiation à Java et Eclipse

TP1 : Initiation à Java et Eclipse TP1 : Initiation à Java et Eclipse 1 TP1 : Initiation à Java et Eclipse Systèmes d Exploitation Avancés I. Objectifs du TP Ce TP est une introduction au langage Java. Il vous permettra de comprendre les

Plus en détail

IN 102 - Cours 1. 1 Informatique, calculateurs. 2 Un premier programme en C

IN 102 - Cours 1. 1 Informatique, calculateurs. 2 Un premier programme en C IN 102 - Cours 1 Qu on le veuille ou non, les systèmes informatisés sont désormais omniprésents. Même si ne vous destinez pas à l informatique, vous avez de très grandes chances d y être confrontés en

Plus en détail

GESTION DES FICHIERS C/UNIX

GESTION DES FICHIERS C/UNIX Licence IG Page 1 sur 6 GESTION DES FICHIERS C/UNIX Introduction Deux modes d appel - Par la bibliothèque standard C (appel de haut niveau) - Par appels système (bas niveau) Nécessite les includes suivant

Plus en détail

Les fichiers. Chapitre 4

Les fichiers. Chapitre 4 Chapitre 4 Les fichiers Jusqu à maintenant tous les programmes que nous avons conçus travaillaient sur des données qui étaient perdues après chaque session de travail. On peut cependant, c est bien naturel,

Plus en détail

Plan du Travail. 2014/2015 Cours TIC - 1ère année MI 30

Plan du Travail. 2014/2015 Cours TIC - 1ère année MI 30 Plan du Travail Chapitre 1: Internet et le Web : Définitions et historique Chapitre 2: Principes d Internet Chapitre 3 : Principaux services d Internet Chapitre 4 : Introduction au langage HTML 2014/2015

Plus en détail

Cours 1 : Qu est-ce que la programmation?

Cours 1 : Qu est-ce que la programmation? 1/65 Introduction à la programmation Cours 1 : Qu est-ce que la programmation? Yann Régis-Gianas yrg@pps.univ-paris-diderot.fr Université Paris Diderot Paris 7 2/65 1. Sortez un appareil qui peut se rendre

Plus en détail

Java Licence Professionnelle CISII, 2009-10

Java Licence Professionnelle CISII, 2009-10 Java Licence Professionnelle CISII, 2009-10 Cours 4 : Programmation structurée (c) http://www.loria.fr/~tabbone/cours.html 1 Principe - Les méthodes sont structurées en blocs par les structures de la programmation

Plus en détail

03/04/2007. Tâche 1 Tâche 2 Tâche 3. Système Unix. Time sharing

03/04/2007. Tâche 1 Tâche 2 Tâche 3. Système Unix. Time sharing 3/4/27 Programmation Avancée Multimédia Multithreading Benoît Piranda Équipe SISAR Université de Marne La Vallée Besoin Programmes à traitements simultanés Réseau Réseau Afficher une animation en temps

Plus en détail

Internets. Informatique de l Internet: le(s) Internet(s) Composantes de l internet R3LR RENATER

Internets. Informatique de l Internet: le(s) Internet(s) Composantes de l internet R3LR RENATER Internets Informatique de l Internet: le(s) Internet(s) Joël Quinqueton Dépt MIAp, UFR IV UPV Université Montpellier III RENATER, R3LR Services Internet Protocoles Web Sécurité Composantes de l internet

Plus en détail

Gestion distribuée (par sockets) de banque en Java

Gestion distribuée (par sockets) de banque en Java Gestion distribuée (par sockets) de banque en Java Université Paris Sud Rappel sur la solution locale de gestion simple de banque L objet de cet exercice était de créer une application java qui implante

Plus en détail

NOTIONS DE RESEAUX INFORMATIQUES

NOTIONS DE RESEAUX INFORMATIQUES NOTIONS DE RESEAUX INFORMATIQUES GENERALITES Définition d'un réseau Un réseau informatique est un ensemble d'équipements reliés entre eux afin de partager des données, des ressources et d'échanger des

Plus en détail

le minimum pour communiquer par réseau (sans toutefois y comprendre grand chose)

le minimum pour communiquer par réseau (sans toutefois y comprendre grand chose) L API socket en résumé le minimum pour communiquer par réseau (sans toutefois y comprendre grand chose) Fabrice HARROUET École Nationale d Ingénieurs de Brest http://www.enib.fr/~harrouet/ enib 1/58 Propos

Plus en détail

Introduction à Java. Matthieu Herrb CNRS-LAAS. Mars 2014. http://homepages.laas.fr/matthieu/cours/java/java.pdf

Introduction à Java. Matthieu Herrb CNRS-LAAS. Mars 2014. http://homepages.laas.fr/matthieu/cours/java/java.pdf Introduction à Java Matthieu Herrb CNRS-LAAS http://homepages.laas.fr/matthieu/cours/java/java.pdf Mars 2014 Plan 1 Concepts 2 Éléments du langage 3 Classes et objets 4 Packages 2/28 Histoire et motivations

Plus en détail

Le système de gestion des fichiers, les entrées/sorties.

Le système de gestion des fichiers, les entrées/sorties. Le système de gestion des fichiers, les entrées/sorties. Luigi Santocanale Laboratoire d Informatique Fondamentale, Centre de Mathématiques et Informatique, 39, rue Joliot-Curie - F-13453 Marseille 19

Plus en détail

Simulation d un système de paiement par carte bancaire

Simulation d un système de paiement par carte bancaire Simulation d un système de paiement par carte bancaire Mini projet IN301/IN3ST01-2009-2010 Sujet rédigé par Jean Cousty et Laurent Najman, très librement inspiré d un projet de Jérome Gueydan pour l ENSTA

Plus en détail

Firewall Net Integrator Vue d ensemble

Firewall Net Integrator Vue d ensemble Net Integration Technologies, Inc. http://www.net-itech.com Julius Network Solutions http://www.julius.fr Firewall Net Integrator Vue d ensemble Version 1.00 TABLE DES MATIERES 1 INTRODUCTION... 3 2 ARCHITECTURE

Plus en détail

Info0101 Intro. à l'algorithmique et à la programmation. Cours 3. Le langage Java

Info0101 Intro. à l'algorithmique et à la programmation. Cours 3. Le langage Java Info0101 Intro. à l'algorithmique et à la programmation Cours 3 Le langage Java Pierre Delisle, Cyril Rabat et Christophe Jaillet Université de Reims Champagne-Ardenne Département de Mathématiques et Informatique

Plus en détail

Mettre en place un accès sécurisé à travers Internet

Mettre en place un accès sécurisé à travers Internet Mettre en place un accès sécurisé à travers Internet Dans cette partie vous verrez comment configurer votre serveur en tant que serveur d accès distant. Dans un premier temps, les méthodes pour configurer

Plus en détail

Pour signifier qu'une classe fille hérite d'une classe mère, on utilise le mot clé extends class fille extends mère

Pour signifier qu'une classe fille hérite d'une classe mère, on utilise le mot clé extends class fille extends mère L'héritage et le polymorphisme en Java Pour signifier qu'une classe fille hérite d'une classe mère, on utilise le mot clé extends class fille extends mère En java, toutes les classes sont dérivée de la

Plus en détail

Cours de C. Petits secrets du C & programmation avancée. Sébastien Paumier

Cours de C. Petits secrets du C & programmation avancée. Sébastien Paumier Cours de C Petits secrets du C & programmation avancée Sébastien Paumier paumier@univ-mlv.fr Illustrations provenant du site http://tux.crystalxp.net/ 1 Affectations étendues a+=expression a=a+expression

Plus en détail

Le traitement du temps

Le traitement du temps Programmation Système Mesure Horloges Sommeil Mise en forme Fabrice Harrouet École Nationale d Ingénieurs de Brest harrouet@enib.fr http://www.enib.fr/~harrouet/ enib, F.H... 1/30 Intérêt Cadencer les

Plus en détail

Configuration automatique

Configuration automatique Configuration automatique (/home/terre/d01/adp/bcousin/polys/internet:gestion_reseau/6.dhcp.fm- 29 Septembre 1999 12:07) PLAN Introduction Les principes de DHCP Le protocole DHCP Conclusion Bibliographie

Plus en détail

Cours intensif Java. 1er cours: de C à Java. Enrica DUCHI LIAFA, Paris 7. Septembre 2009. Enrica.Duchi@liafa.jussieu.fr

Cours intensif Java. 1er cours: de C à Java. Enrica DUCHI LIAFA, Paris 7. Septembre 2009. Enrica.Duchi@liafa.jussieu.fr . Cours intensif Java 1er cours: de C à Java Septembre 2009 Enrica DUCHI LIAFA, Paris 7 Enrica.Duchi@liafa.jussieu.fr LANGAGES DE PROGRAMMATION Pour exécuter un algorithme sur un ordinateur il faut le

Plus en détail

Oléane VPN : Les nouvelles fonctions de gestion de réseaux. Orange Business Services

Oléane VPN : Les nouvelles fonctions de gestion de réseaux. Orange Business Services Oléane VPN : Les nouvelles fonctions de gestion de réseaux Orange Business Services sommaire 1. Qu'est-ce que la fonction serveur/relais DHCP? Comment cela fonctionne-t-il?...3 1.1. Serveur DHCP...3 1.2.

Plus en détail

Le service FTP. M.BOUABID, 04-2015 Page 1 sur 5

Le service FTP. M.BOUABID, 04-2015 Page 1 sur 5 Le service FTP 1) Présentation du protocole FTP Le File Transfer Protocol (protocole de transfert de fichiers), ou FTP, est un protocole de communication destiné à l échange informatique de fichiers sur

Plus en détail

I. Introduction aux fonctions : les fonctions standards

I. Introduction aux fonctions : les fonctions standards Chapitre 3 : Les fonctions en C++ I. Introduction aux fonctions : les fonctions standards A. Notion de Fonction Imaginons que dans un programme, vous ayez besoin de calculer une racine carrée. Rappelons

Plus en détail

Lier Erlang avec d autres langages de programmation

Lier Erlang avec d autres langages de programmation 16 Lier Erlang avec d autres langages de programmation Les logiciels actuels, quelle que soit leur taille, sont souvent écrits dans plusieurs langages de programmation. Généralement, les pilotes de périphériques

Plus en détail

Institut Supérieure Aux Etudes Technologiques De Nabeul. Département Informatique

Institut Supérieure Aux Etudes Technologiques De Nabeul. Département Informatique Institut Supérieure Aux Etudes Technologiques De Nabeul Département Informatique Support de Programmation Java Préparé par Mlle Imene Sghaier 2006-2007 Chapitre 1 Introduction au langage de programmation

Plus en détail

Centre CPGE TSI - Safi 2010/2011. Algorithmique et programmation :

Centre CPGE TSI - Safi 2010/2011. Algorithmique et programmation : Algorithmique et programmation : STRUCTURES DE DONNÉES A. Structure et enregistrement 1) Définition et rôle des structures de données en programmation 1.1) Définition : En informatique, une structure de

Plus en détail

Programmer en JAVA. par Tama (tama@via.ecp.fr( tama@via.ecp.fr)

Programmer en JAVA. par Tama (tama@via.ecp.fr( tama@via.ecp.fr) Programmer en JAVA par Tama (tama@via.ecp.fr( tama@via.ecp.fr) Plan 1. Présentation de Java 2. Les bases du langage 3. Concepts avancés 4. Documentation 5. Index des mots-clés 6. Les erreurs fréquentes

Plus en détail

L3 informatique Réseaux : Configuration d une interface réseau

L3 informatique Réseaux : Configuration d une interface réseau L3 informatique Réseaux : Configuration d une interface réseau Sovanna Tan Septembre 2009 Révision septembre 2012 1/23 Sovanna Tan Configuration d une interface réseau Plan 1 Introduction aux réseaux 2

Plus en détail

RAPPORT DE CONCEPTION UML :

RAPPORT DE CONCEPTION UML : Carlo Abi Chahine Sylvain Archenault Yves Houpert Martine Wang RAPPORT DE CONCEPTION UML : Bamboo Ch@t Projet GM4 Juin 2006 Table des matières 1 Introduction 2 2 Présentation du logiciel 3 2.1 Précisions

Plus en détail