Recherche…


Remarques

Exemple de socket client Python (très) basique

Le plus simple exemple client-serveur de socket Python

Du côté serveur:

import socket

serversocket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
serversocket.bind(('localhost', 8089))
serversocket.listen(5) # become a server socket, maximum 5 connections

while True:
    connection, address = serversocket.accept()
    buf = connection.recv(64)
    if len(buf) > 0:
        print(buf)
    break

Côté client:

import socket

clientsocket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
clientsocket.connect(('localhost', 8089))
clientsocket.send('hello')

Commencez par exécuter SocketServer.py et assurez-vous que le serveur est prêt à écouter / recevoir sth. Le client envoie alors des informations au serveur. Après que le serveur a reçu sth, il se termine

Création d'un serveur HTTP simple

Pour partager des fichiers ou héberger des sites Web simples (http et javascript) sur votre réseau local, vous pouvez utiliser le module SimpleHTTPServer intégré de Python. Python devrait être dans votre variable Path. Accédez au dossier contenant vos fichiers et tapez:

Pour python 2 :

$ python -m SimpleHTTPServer <portnumber>

Pour python 3 :

$ python3 -m http.server <portnumber>

Si le numéro de port n'est pas indiqué, 8000 est le port par défaut. Donc, le résultat sera:

Servant HTTP sur le port 0.0.0.0 8000 ...

Vous pouvez accéder à vos fichiers via n'importe quel périphérique connecté au réseau local en tapant http://hostipaddress:8000/ .

hostipaddress est votre adresse IP locale qui commence probablement par 192.168.xx

Pour terminer le module, appuyez simplement sur ctrl+c.

Créer un serveur TCP

Vous pouvez créer un serveur TCP à l'aide de la bibliothèque socketserver . Voici un serveur d'écho simple.

Du côté serveur

from sockerserver import BaseRequestHandler, TCPServer

class EchoHandler(BaseRequestHandler):
    def handle(self):
        print('connection from:', self.client_address)
        while True:
            msg = self.request.recv(8192)
            if not msg:
                break
            self.request.send(msg)

if __name__ == '__main__':
    server = TCPServer(('', 5000), EchoHandler)
    server.serve_forever()

Côté client

from socket import socket, AF_INET, SOCK_STREAM
sock = socket(AF_INET, SOCK_STREAM)
sock.connect(('localhost', 5000))
sock.send(b'Monty Python')
sock.recv(8192)  # returns b'Monty Python'

socketserver facilite la création de serveurs TCP simples. Cependant, vous devez savoir que, par défaut, les serveurs sont à thread unique et ne peuvent servir qu’un client à la fois. Si vous souhaitez gérer plusieurs clients, instanciez à la place un ThreadingTCPServer .

from socketserver import ThreadingTCPServer
...
if __name__ == '__main__':
    server = ThreadingTCPServer(('', 5000), EchoHandler)
    server.serve_forever()

Création d'un serveur UDP

Un serveur UDP est facilement créé à l'aide de la bibliothèque socketserver .

un simple serveur de temps:

import time
from socketserver import BaseRequestHandler, UDPServer

class CtimeHandler(BaseRequestHandler):
    def handle(self):
    print('connection from: ', self.client_address)
    # Get message and client socket
    msg, sock = self.request
    resp = time.ctime()
    sock.sendto(resp.encode('ascii'), self.client_address)

if __name__ == '__main__':
    server = UDPServer(('', 5000), CtimeHandler)
    server.serve_forever()

Essai:

>>> from socket import socket, AF_INET, SOCK_DGRAM
>>> sock = socket(AF_INET, SOCK_DGRAM)
>>> sick.sendto(b'', ('localhost', 5000))
0
>>> sock.recvfrom(8192)
(b'Wed Aug 15 20:35:08 2012', ('127.0.0.1', 5000))

Démarrez Simple HttpServer dans un thread et ouvrez le navigateur

Utile si votre programme produit des pages Web en cours de route.

from http.server import HTTPServer, CGIHTTPRequestHandler
import webbrowser
import threading

def start_server(path, port=8000):
    '''Start a simple webserver serving path on port'''
    os.chdir(path)
    httpd = HTTPServer(('', port), CGIHTTPRequestHandler)
    httpd.serve_forever()

# Start the server in a new thread
port = 8000
daemon = threading.Thread(name='daemon_server',
                          target=start_server,
                          args=('.', port)
daemon.setDaemon(True) # Set as a daemon so it will be killed once the main thread is dead.
daemon.start()

# Open the web browser 
webbrowser.open('http://localhost:{}'.format(port))


Modified text is an extract of the original Stack Overflow Documentation
Sous licence CC BY-SA 3.0
Non affilié à Stack Overflow