Back to Top

CREATION D'UN SERVEUR ET D'UN CLIENT

 L'architecture serveur-client est un modèle de communication où un serveur central gère les requêtes et fournit des services à plusieurs clients connectés. En utilisant la librairie `socket` du langage Python, il est possible de mettre en place un serveur qui peut prendre en charge plusieurs clients pour échanger des messages. Les sockets permettent l'établissement de connexions réseau, l'envoi et la réception de données entre les applications.


Pour créer un serveur en Python avec la librairie `socket`, il est nécessaire de suivre plusieurs étapes clés :


1. Création d'un socket serveur : On crée un socket en spécifiant l'adresse IP et le port sur lequel le serveur écoutera les connexions des clients.


2. Liaison du socket : Le socket est lié à une adresse IP et un port spécifique.


3. Attente des connexions : Le serveur reste en écoute pour accepter les connexions entrantes des clients.

Voici le code Python d'un serveur capable de gérer plusieurs clients pour qu'ils puissent s'échanger des messages, ainsi que le code du client associé :


**Serveur :**

```python

import socket

import threading


clients = []


def handle_client(client_socket, client_address):

    while True:

        message = client_socket.recv(1024).decode()

        if message == "exit":

            clients.remove((client_socket, client_address))

            break

        for client in clients:

            if client != (client_socket, client_address):  # Evite d'envoyer le message à l'émetteur

                client[0].send(message.encode())


def main():

    server = socket.socket(socket.AF_INET, socket.SOCK_STREAM)

    server.bind(("127.0.0.1", 9999))

    server.listen(5)


    print("Serveur en attente de connexions...")


    while True:

        client_socket, client_address = server.accept()

        print(f"Connexion acceptée de {client_address}")

        clients.append((client_socket, client_address))


        client_handler = threading.Thread(target=handle_client, args=(client_socket, client_address))

        client_handler.start()


if __name__ == "__main__":

    main()

```


**Client :**

```python

import socket

import threading


def send_message():

    while True:

        message = input("Message à envoyer ('exit' pour quitter) : ")

        client_socket.send(message.encode())

        if message == "exit":

            break


client_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)

client_socket.connect(("127.0.0.1", 9999))


send_thread = threading.Thread(target=send_message)

send_thread.start()


while True:

    incoming_message = client_socket.recv(1024).decode()

    print(f"Message reçu : {incoming_message}")

    if incoming_message == "exit":

        break

```


**Exemple de fonctionnement :**

1. Lancez d'abord le serveur, puis exécutez autant d'instances de clients que vous le souhaitez.

2. Chaque client peut envoyer des messages qui seront reçus par tous les autres clients connectés au serveur.

3. Pour quitter, un client peut saisir "exit" et la connexion se termine pour ce client.

4. Le serveur continue de fonctionner pour les autres clients connectés.


**Conditions requises pour le bon fonctionnement :**

1. Assurez-vous que le serveur et les clients sont exécutés sur des machines accessibles sur le même réseau, ou sur la même machine (localhost).

2. Les ports 9999 (ou tout autre port que vous spécifiez) doivent être disponibles et ouverts pour permettre les connexions.

3. Assurez-vous que le pare-feu ne bloque pas les connexions entrantes et sortantes sur le port spécifié.

4. Les adresses IP et les ports spécifiés dans les codes serveur et client doivent correspondre pour permettre une communication correcte.


N'hésitez pas à ajuster et personnaliser ces codes en fonction de vos besoins spécifiques et des fonctionnalités que vous souhaitez implémenter !

4. Acceptation des connexions : Lorsqu'un client se connecte, le serveur accepte la connexion et crée un nouveau socket dédié à ce client.


5. Échange de données : Le serveur et le client peuvent alors échanger des données via les sockets.



Les SGBD en python

 SQLite, MySQL et PostgreSQL sont tous des systèmes de gestion de base de données relationnelles largement utilisés dans le monde du développement logiciel, mais ils présentent des différences significatives en termes de fonctionnement, d'utilisation et de particularités.


SQLite:

SQLite est une base de données relationnelle légère et autonome qui ne nécessite pas de serveur dédié, car elle stocke les données dans un fichier unique. Cela en fait un bon choix pour les applications mobiles ou les petites applications qui n'ont pas besoin d'une base de données de grande taille.


Fonctionnement:

- SQLite stocke les données dans un fichier de base de données SQLite, éliminant ainsi le besoin d'un serveur de base de données distinct.

- Les requêtes SQL sont exécutées directement sur le fichier de base de données local.

- SQLite prend en charge les types de données standard tels que INTEGER, TEXT, REAL, etc.


Exemple d'utilisation:

```python

import sqlite3


conn = sqlite3.connect('ma_base_de_donnees.db')

c = conn.cursor()


c.execute('''CREATE TABLE utilisateurs (id INTEGER PRIMARY KEY, nom TEXT)''')

c.execute("INSERT INTO utilisateurs (nom) VALUES ('Alice')")

conn.commit()


conn.close()

```


Particularités:

- SQLite est idéal pour les applications nécessitant une base de données intégrée.

- Il peut être utilisé pour le prototypage rapide d'applications ou pour les applications nécessitant une petite base de données.


MySQL:

MySQL est un système de gestion de base de données relationnelle open source populaire, utilisé dans de nombreux environnements de production. Il est conçu pour gérer des bases de données de taille moyenne à grande, offrant des performances élevées et la prise en charge de nombreuses fonctionnalités avancées.


Fonctionnement:

- MySQL fonctionne sur un modèle client-serveur, où les requêtes sont envoyées à un serveur MySQL pour traitement.

- Il prend en charge la plupart des fonctionnalités SQL standard, ainsi que des fonctionnalités avancées telles que les procédures stockées et les déclencheurs.


Exemple d'utilisation:

```python

import mysql.connector


conn = mysql.connector.connect(

    host="localhost",

    user="utilisateur",

    password="mot_de_passe",

    database="ma_base_de_donnees"

)


cursor = conn.cursor()


cursor.execute("CREATE TABLE utilisateurs (id INT AUTO_INCREMENT PRIMARY KEY, nom VARCHAR(255))")

cursor.execute("INSERT INTO utilisateurs (nom) VALUES ('Alice')")


conn.commit()

conn.close()

```


Particularités:

- MySQL est adapté aux applications nécessitant une base de données robuste et performante.

- Il est largement utilisé dans les environnements de production pour les applications web et les applications d'entreprise.


PostgreSQL:

PostgreSQL est un système de gestion de base de données relationnelle open source réputé pour sa fiabilité, sa conformité SQL élevée et sa prise en charge avancée des fonctionnalités. Il est souvent choisi pour les applications nécessitant une grande extensibilité et une puissance de traitement élevée.


Fonctionnement:

- PostgreSQL fonctionne sur un modèle client-serveur et prend en charge les fonctionnalités SQL avancées telles que les vues matérialisées, les index partiels, etc.

- Il offre une architecture extensible permettant de prendre en charge des charges de travail importantes.


Exemple d'utilisation:

```python

import psycopg2


conn = psycopg2.connect("dbname=ma_base_de_donnees user=utilisateur password=mot_de_passe host=localhost")

cursor = conn.cursor()


cursor.execute("CREATE TABLE utilisateurs (id SERIAL PRIMARY KEY, nom VARCHAR(255))")

cursor.execute("INSERT INTO utilisateurs (nom) VALUES ('Alice')")


conn.commit()

conn.close()

```


Particularités:

- PostgreSQL est connu pour sa conformité élevée aux normes SQL et sa capacité à gérer des tâches complexes.

- Il est largement utilisé dans les applications nécessitant une base de données robuste, extensible et hautement performante.


Developpement Web avec Python

 Django, Flask, CherryPy et Beautiful Soup sont des outils populaires en Python utilisés pour des tâches spécifiques telles que le développement web et le web scraping. Chacun a ses propres caractéristiques et convient à des cas d'utilisation différents.


Django:

Django est un framework web open source et complet qui favorise la productivité en facilitant le développement d'applications web complexes. Il repose sur le principe du DRY (Don't Repeat Yourself) et comprend une architecture basée sur le modèle-vue-contrôleur (MVC).


Fonctionnement:

- Django propose des fonctionnalités intégrées telles que l'ORM (Object-Relational Mapping), l'administration automatique, le système d'authentification, etc.

- Il suit des conventions strictes pour structurer les applications web, ce qui facilite la collaboration entre les développeurs.


Exemple d'utilisation:

```python

from django.http import HttpResponse


def ma_vue(request):

    return HttpResponse("Bonjour, Django !")

```


Particularités:

- Django convient aux applications web de grande envergure nécessitant des fonctionnalités avancées telles que l'administration automatique et la gestion des utilisateurs.

- Il est connu pour son écosystème étendu de packages et de bibliothèques.


Flask:

Flask est un micro-framework web minimaliste et extensible qui permet aux développeurs de créer des applications web de manière simple et légère. Il offre une grande flexibilité et une approche modulaire pour construire des applications web.


Fonctionnement:

- Flask est basé sur le principe WSGI (Web Server Gateway Interface) pour gérer les requêtes HTTP.

- Il propose des extensions pour ajouter des fonctionnalités telles que l'authentification, la validation de formulaires, etc.


Exemple d'utilisation:

```python

from flask import Flask


app = Flask(__name__)


@app.route('/')

def accueil():

    return 'Bonjour, Flask !'


if __name__ == '__main__':

    app.run()

```


Particularités:

- Flask est idéal pour les petites applications web et les projets simples qui nécessitent une approche minimaliste.

- Il offre une grande liberté aux développeurs pour structurer leur application comme ils le souhaitent.


CherryPy:

CherryPy est un framework web léger, souple et modulaire qui suit le principe du "batteries-included, but removable" pour fournir des fonctionnalités essentielles pour le développement web. Il est conçu pour être facile à intégrer avec d'autres composants.


Fonctionnement:

- CherryPy utilise un serveur web intégré pour gérer les requêtes HTTP sans nécessiter de serveur externe.

- Il offre une syntaxe élégante et simple pour définir des applications web.


Exemple d'utilisation:

```python

import cherrypy


class MonSite:

    @cherrypy.expose

    def index(self):

        return "Bonjour, CherryPy !"


cherrypy.quickstart(MonSite())

```


Particularités:

- CherryPy convient aux applications web simples nécessitant un framework léger et modulaire.

- Il permet une configuration déclarative et un déploiement facile.


Beautiful Soup:

Beautiful Soup est une bibliothèque Python largement utilisée pour l'analyse de documents HTML et XML. Elle facilite le web scraping en extrayant des données structurées à partir de pages web.


Fonctionnement:

- Beautiful Soup analyse le contenu HTML/XML d'une page web et fournit des structures de données faciles à manipuler pour extraire des informations.

- Il prend en charge la navigation dans les arbres de documents pour rechercher des balises et des éléments spécifiques.


Exemple d'utilisation:

```python

from bs4 import BeautifulSoup

import requests


url = 'https://www.example.com'

page = requests.get(url)

soup = BeautifulSoup(page.content, 'html.parser')


titre = soup.find('h1').get_text()

print(titre)

```


Particularités:

- Beautiful Soup est idéal pour le web scraping et l'extraction de données à partir de pages web.

- Il offre des fonctionnalités puissantes pour traiter et manipuler les données HTML/XML extraites.



bonjour chers amis. si vous etes ici pour apprendre les bases du python, vous êtes au bons endroits.

Creation à cette page web vous pourrez developper vos connaissance sur le python, apprendre de nouvelles librairies, participer à des evenements collectifs et bien encore.

Alors bienvenue sur Python Lite fr et liberez votre creativité 🎉🎉🎉🎉💡🚩


Creation d'un Chat bot telegramm

Voici un exemple simple de chatbot Telegram codé en Python en utilisant la bibliothèque python-telegram-bot:


from telegram.ext import Updater, CommandHandler, MessageHandler, Filters

#fonction handler pour la commande /start
def start(update, context):
    context.bot.send_message(chat_id=update.effective_chat.id, text="Bonjour! Je suis un chatbot.")

#fonction handler pour les messages textuels
def echo(update, context):
    context.bot.send_message(chat_id=update.effective_chat.id, text=update.message.text)

def main():
    # Initialisation du Bot
    updater = Updater("YOUR_TELEGRAM_BOT_TOKEN", use_context=True)

    # Récupération du dispacher
    dp = updater.dispatcher

    # Handler pour la commande /start
    dp.add_handler(CommandHandler("start", start))

    # Handler pour les messages textuels
    dp.add_handler(MessageHandler(Filters.text & (~Filters.command), echo))

    # Démarrage du bot
    updater.start_polling()

    # Garde le bot actif jusqu'à ce que Ctrl+C soit pressé
    updater.idle()

if __name__ == '__main__':
    main()

Assurez-vous d'avoir installé la bibliothèque

python-telegram-bot

en exécutant

pip install python-telegram-bot

. N'oubliez pas de remplacer

"YOUR_TELEGRAM_BOT_TOKEN"

par le token d'authentification de votre bot Telegram.

Ce chatbot répondra "Bonjour! Je suis un chatbot." lorsque vous lui envoyez la commande

/start

et répétera n'importe quel message texte qu'il reçoit. Vous pouvez ajouter des fonctionnalités plus avancées comme des réponses intelligentes, des interactions avec des API externes, etc., en développant les fonctions de gestion des messages.

N'oubliez pas de personnaliser et d'adapter ce code en fonction de vos besoins et des fonctionnalités que vous souhaitez mettre en place pour votre chatbot Telegram.