Désencyclobooks:Apprendre à faire un serveur en Python

Un article de la désencyclopédie.
Aller à la navigation Aller à la recherche
Wikipedia-logo-fr.png

Cet article, basé sur le texte de Wikipédia Wikibooks «Communications à travers un réseau», est disponible uniquement sous licence GFDL.


Vous vous demandez surement "Qu'est-ce que c'est que ce Désencyclobooks: pas beau au début du titre ?". Vous avez peut-être raison. Ou pas. La vérité est relative.

Mais le fait est que, même si certains tendent à l'oublier, ce site est une parodie de Wikipédia. Ainsi, lorsque la Wikimedia Foundation a créé le Wiktionnaire, un projet de dictionnaire en parallèle de Wikipédia, on l'a imité direct ! Ce fut la naissance du Déktionnaire. Et lorsqu'ils créèrent Wikinews, un wiki où chacun peut écrire des articles sur l'actualité, bam, on invente les désinformations.

Mais ce n'est pas tout. Wikimédia a ensuite créé Wikibooks, un wiki où chacun peut écrire des livres à caractère pédagogique et informatif. J'y ai regardé un coup, on peut y trouver des livres de recettes, des livres éducatifs pour enfants (pour apprendre à compter jusqu'à 10), et d'autres trucs inutiles.

Et que vois-je ? Aucune parodie sur la sencyclopédie ! C'est nul ! On est ici pour se foutre de la gueule de Wikipédia, et on passe à côté de ça !

Il est donc de notre devoir d'y parodier. J'ai donc pris un article au hasard, allez le voir d'abord, ou pas, je m'en fous. Le principal c'est que vous lisiez cette parodie. Pour ceux qui ont oublié le thème, relisez le titre et revenez voir après si je suis toujours là.

On commence

Bien, je vois que vous êtes attentifs, sauf quelques-uns au fond. On va pouvoir commencer. Pour faire un serveur avec le fameux langage de programmation Python, c'est pas très compliqué, vous allez voir. Nous allons utiliser le module socket.

Ce module contient toutes les procédures nécessaires à notre serveur. Je pense que le meilleur moyen pour vous d'y visualiser est de voir le code d'un serveur rudimentaire :

# Définition d'un serveur réseau rudimentaire
# Ce serveur attend la connexion d'un client, pour entamer un dialogue avec lui

import socket, sys

HOST = '192.168.14.152'
PORT = 50000

# 1) création du socket :
mySocket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)

# 2) liaison du socket à une adresse précise :
try:
    mySocket.bind((HOST, PORT))
except socket.error:
    print "La liaison du socket à l'adresse choisie a échoué."
    sys.exit()

while 1:
    # 3) Attente de la requête de connexion d'un client :
    print "Serveur prêt, quel plat voulez vous ..."
    mySocket.listen(5)
   
    # 4) Etablissement de la connexion :
    connexion, adresse = mySocket.accept()
    print "Client connecté, adresse IP %s, porc %s" % (adresse[0], adresse[1])
    
    # 5) Dialogue avec le client :
    connexion.send("Vous êtes connecté au serveur Marcel. Dégueulez votre poulet.")
    msgClient = connexion.recv(1024)
    while 1:
        print "C>", msgClient
        if msgClient.upper() == "FIN" or msgClient =="":
            break
        msgServeur = raw_input("S> ")
        connexion.send(msgServeur)
        msgClient = connexion.recv(1024)

    # 6) Fermeture de la connexion :
    connexion.send("l'addition svp !!!!")
    print "Connexion interrompue."
    connexion.close()

    ch = raw_input("<R>ecommencer <T>erminer ? ")
    if ch.upper() =='T':
        break

J'imagine que vous comprenez l'utilisation de ce module, qui est assez simp...

SingeSavant.jpg L'auteur de cet article dit :
Bon, mes supérieurs hiérarchiques m'indiquent que ceci peut être un peu trop complexe pour certains débutants. On va donc revoir quelques bases avant de s'y remettre.


Parenthèse sur les modules

Je vous ai parlé du module socket peut-être un peu trop vite. Certains parmi vous ne savent peut-être même pas ce qu'est un module. Nous allons donc en parler dans cette partie.

Un module contient des procédures qui peuvent être utiles dans un cas précis. Nous allons, pour commencer simplement, prendre l'exemple du module math, qui permet entre autre de faire des calculs de sinus.

Pour l'utiliser, on doit tout d'abord importer le module, tout en haut du code.

import math

Voilà, comme ça ! Pour calculer un sinus, il faut utiliser la fonction sin() du module. Par exemple, si l'on veut sauvegarder le résultat du sinus de 42 dans une variable, on écrit :

variable=math.sin(42)
SingeSavant.jpg L'auteur de cet article dit :
Bon, mes supérieurs hiérarchiques m'indiquent que ceci peut être un peu trop complexe pour certains débutants. On va donc revoir quelques bases avant de s'y remettre.


Parenthèse sur les variables

Désolé à tous. J'ai malencontreusement parlé de variables, alors que je ne vous ai pas encore dit ce que c'est. Je vous dois des excuses.

Parlons-en, des variables. Une variable permet de "sauvegarder" une information, tant que le programme fonctionne. Par exemple, si je veux faire une opération en deux étapes, je peux sauvegarder le résultat de la première sous-opération dans cette variable. Voici un exemple :

a=2+3
b=a+5

Avec ce code, on obtient une variable b qui vaut 10.

SingeSavant.jpg L'auteur de cet article dit :
Bon, mes supérieurs hiérarchiques m'indiquent que ceci peut être un peu trop complexe pour certains débutants. On va donc revoir quelques bases avant de s'y remettre.


Parenthèse sur les additions

Je ne peux évidement pas vous expliquer le fonctionnement des variables si l'on ne vous a jamais appris à faire des additions. Vous verrez, c'est assez simple.

Le meilleur moyen de commencer avec les additions est de compter sur ses doigts. Ainsi, les petits nenfants, si ici j'ai un tas de trois bonbons, et là un tas de deux bonbons, pour les compter, on fait la chose suivante :

Je prends un bonbon.
Je le mets à part.
Je regarde mon premier doigt.
Je dis "un".

Je prends un bonbon.
Je le mets à part.
Je regarde mon deuxième doigt.
Je dis "deux".

Non, Nino, reste concentré, tu pourras manger les bonbons après.

Je prends un bonbon.
Je le mets à part.
Je regarde mon troisième doigt.
Je dis "trois".

Bon, au pire, on s'arrête là, on n'a qu'à dire qu'il a compté que les bonbons du premier tas.
Ah ben non, pour expliquer les additions, il faut les deux tas.
Bordel de...

Non les enfants, j'ai pas dit de gros mot.
Je me suis retenu.
Vous avez intérêt à faire pareil !

On sélectionne le premier paragraphe.
On fait "Ctrl+c", puis "Ctrl+v"
On remplace "un" et "premier" par "quatre" et "quatrième"
Ça donne :

Je prends un bonbon.
Je le mets à part.
Je regarde mon quatrième doigt.
Je dis "quatre".

Oh et puis merde zut, il prend le cinquième, dit "cinq", et le bouffe.
SingeSavant.jpg L'auteur de cet article dit :
Bon, mes supérieurs hiérarchiques m'indiquent que ceci peut être un peu trop complexe pour certains débutants. On va donc revoir quelques bases avant de s'y remettre.


Parenthèse sur les doigts

En fait, je sais pas si vous avez vu, mais j'ai parlé des doigts sans dire ce que c'est. Et c'est pas bien. Pour être rigoureux, il faut tout bien définir.

Il s'agit des cinq trucs que l'on a au bout des mains. Oui, voilà, ces cinq trucs que l'on peut bouger. Oups, j'ai pas dit ce qu'est une main. Je refais une partie, ou je l'explique dans celle-là. Hum, je sais pas...

...

...

...

...

...

...

Cruel dilemme !

...

...

...

...

...

...

Qui suis-je pour porter la responsabilité de ce choix ?

...

...

...

...

...

...

...

...

...

...

Il faut bien peser le pour et le contre...

...

...

...

...

...

...

...

Ah, mais si ça se trouve, vous ne savez pas ce que veut dire "peser" !

Parenthèse sur le mot "peser"

Et oui, on n'a pas le temps de rajouter le bandeau où je dis des conneries à chaque fois !

SingeSavant.jpg L'auteur de cet article dit :
Bon, mes supérieurs hiérarchiques m'indiquent que ceci peut être un peu trop complexe pour certains débutants. On va donc revoir quelques bases avant de s'y remettre.


Parenthèses sur les conneries

Cet article est une connerie, ça saute aux yeux, non ?

Comment ça, non ?

Je rappelle que sauter, c'est mettre ses deux pieds hors du contact du sol.

Je rappelle que les yeux, c'est ce qu'on peut crever en mettant un marteau-piqueur dedans.

Un marteau-piqueur, c'est ce qui peut crever les yeux, pour info.

Oh, et puis, allez chercher sur Google !

SingeSavant.jpg L'auteur de cet article dit :
Bon, mes supérieurs hiérarchiques se sont endormis. Mais je m'indique à moi-même que ceci peut être un peu trop complexe pour certains débutants. On va donc revoir quelques bases avant de s'y remettre.


Parenthèses sur Google

Pour aller sur Google, il faut avoir allumé son ordinateur.

SingeSavant.jpg L'auteur de cet article dit :
Un tuto ci-dessous pour allumer son ordinateur ne vous fera pas de mal !


Parenthèses sur l'allumage d'ordinateur

Pour allumer un ordinateur, il faut...

Ah, mais attendez...

Si vous êtes en train de lire cette page, c'est que votre ordinateur est allumé.

Donc, vous savez comment allumer un ordinateur.

Donc, vous êtes totalement prêt pour comprendre la partie ci-dessus. Et donc, vous êtes prêt pour lire la partie encore au-dessus ! Et donc, de fil en aiguille, vous êtes prêts pour comprendre la première partie !

Félicitation, vous savez désormais comment programmer un serveur en Python !

Non, ne me remerciez pas, je n'ai fait que mon travail...


Smiley1.png  Portail du Portnawak  •  01.png  Portail de l'Informatique



Que pensez-vous de ce tuto ?
Vous avez voté pour « Il faut définir "sondage" avant de mettre un sondage ! » le 17 octobre 2023 à 18:17. Vous pouvez modifier votre choix en cliquant sur une autre réponse ci-dessous.
1
1
1
1
3
Il y avait 7 votes depuis l’élaboration du sondage au 6 avril 2019 à 18:22.
poll-id C7DDC6FF30B509C5F04F696AC75AA0E4


GoodJob.gif
Cet article a failli être élu au Best Of de la Désencyclopédie.
Si vous l'avez adoré, vous pouvez encore relancer le débat.