22.02.2014 Views

Types de données en Python - LMPT

Types de données en Python - LMPT

Types de données en Python - LMPT

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

Programmation réseau <strong>en</strong> python<br />

On est sur le principe cli<strong>en</strong>t /serveur : le cli<strong>en</strong>t se connecte sur un serveur déterminé par son<br />

nom ou son adresse IP, sur un port précisé. L’objet fondam<strong>en</strong>tal est un socket, qui est une<br />

brique logicielle se mettant <strong>en</strong> écoute <strong>de</strong>rrière un port, et pouvant égalem<strong>en</strong>t transmettre <strong>de</strong>s<br />

données sur ce port.<br />

Coté cli<strong>en</strong>t :<br />

On débute par instancier un objet <strong>de</strong> type socket et le connecter sur le serveur :<br />

# cli<strong>en</strong>t basique<br />

import socket<br />

HOST = ’10.68.5.171’<br />

PORT = 5000<br />

cli<strong>en</strong>tsock = socket.socket(socket.AF_ INET, socket.SOCK_ STREAM)<br />

cli<strong>en</strong>tsock.connect((HOST,PORT))<br />

A partir <strong>de</strong> là, le cli<strong>en</strong>t peut soit recevoir, soit émettre <strong>de</strong>s données à travers le socket cli<strong>en</strong>tsock.<br />

Mais pour cela, il faut avant avoir mis, coté serveur, un soscket <strong>en</strong> écoute, sur le port adapté et<br />

on accepte les connexions <strong>en</strong>trantes.<br />

Coté serveur :<br />

# serveur basique<br />

import socket<br />

HOST = ”<br />

PORT = 5000<br />

serversock = socket.socket(socket.AF_ INET, socket.SOCK_ STREAM)<br />

serversock.bind((HOST,PORT))<br />

serversock.list<strong>en</strong>(1)<br />

(cli<strong>en</strong>tsock, address) = serversock.accept()<br />

Le tuple (cli<strong>en</strong>tsock, address) conti<strong>en</strong>t d’une part un objet servant <strong>de</strong> référ<strong>en</strong>ce vers le socket<br />

cli<strong>en</strong>t qui s’est connecté au serveur, et d’autre part un tableau adress cont<strong>en</strong>ant l’adresse<br />

IP et le port utilisé par le cli<strong>en</strong>t pour se connecter.<br />

Coté serveur aussi, on peut <strong>en</strong>voyer ou récupérer <strong>de</strong>s données transitant par le socket serversock.<br />

Une fois la tranmission faite, il ne faut pas oublier <strong>de</strong> fermer les sockets, sans quoi le port utilisé<br />

ne sera plus disponible. On réalise cela à l’ai<strong>de</strong> <strong>de</strong> la métho<strong>de</strong> close() :<br />

# cote cli<strong>en</strong>t :<br />

cli<strong>en</strong>tsock.close()<br />

# cote serveur :<br />

serversock.close()

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!