IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Réseau/Web Python Discussion :

Socket HTTP avec intégration de données XML


Sujet :

Réseau/Web Python

Mode arborescent

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Futur Membre du Club
    Inscrit en
    Juillet 2010
    Messages
    19
    Détails du profil
    Informations forums :
    Inscription : Juillet 2010
    Messages : 19
    Points : 9
    Points
    9
    Par défaut Socket HTTP avec intégration de données XML
    Bonjour à tous.

    J'aimerai créer une socket serveur qui :

    => écoute sur son IP et le port 8060 les trames de type :
    • GET / HTTP/1.1
    • Host: MON_IP : 8060

    => et réponds par une trame de type :
    • HTTP/1.1 200 OK
    • contenant des informations spécifiques dans le header ainsi qu'en intégrant des données xml


    J'ai mis en PJ un exemple de ce que je cherche à reproduire...

    Concernant le code, j'ai pioché sur Internet ce qui pouvait m'intérésser, notamment que çà soit en mode Thread.

    Le code est le suivant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    #!/usr/bin/python
    # -*- coding: utf-8 -*-
     
     
    # Importation des modules
    import sys
    import argparse
    import getopt
    import threading
    import socket
    import urllib2
     
     
    # Déclaration de l'IP de de l'addresse d'écoute
    SCRIPT = __file__
    HOST = ''
    PORT = ''
     
     
    # Fonction affichant le menu d'aide
    def usage():
     
    	# Création d'un parser avec description et epilogue pour un exemple
    	parser = argparse.ArgumentParser(formatter_class=argparse.RawDescriptionHelpFormatter,
    			 description="Parameters required for " + SCRIPT + " script...",
    			 epilog="Example :\npython " + SCRIPT + " -s 192.168.1.1 -p 8000\r\n\r\n")
     
    	# Ajout des arguments possibles
    	parser.add_argument('-s', '--src-ip', action = 'store_true', help='Source IP address')
    	parser.add_argument("-p", '--src-port', action = 'store_true', help="Source port")
     
    	# On parse les arguments
    	args = parser.parse_args()
     
    	# On affiche le résultat
    	print(args.echo)
     
     
    # Fonction validant les paramètres d'entrée
    def check_arguments(argv):
     
    	# Récupération des variables globales
    	global HOST
    	global PORT
     
    	# Gestion d'erreur
    	try :
    		opts, args = getopt.getopt(argv,"h:s:p:", ["help", "src-ip=", "src-port="])
    	except getopt.GetoptError :
    		usage()
    		sys.exit(2)
     
    	# Sauvegarde des paramètres
    	for opt, arg in opts :
    		if opt in ('-h', '--help'):
    			usage()
    			sys.exit(2)
    		elif opt in ('-s', '--src-ip'):
    			HOST = arg
    		elif opt in ('-p', '--src-port'):
    			PORT = int(arg)
     
    	# Vérification qu'aucun des paramètres ne soit vide
    	if HOST == "" or PORT == "" :
    		if HOST == "" :
    			print "\nAddresse IP d'écoute non renseignée...\n"
    		if PORT == "" :
    			print "\nPort d'écoute non renseigné...\n"
    		sys.exit(2)
     
    # Déclaration de la classe
    class ClientThread(threading.Thread):
     
    	# Objet thread gérant la réception des nouvelles connexions
    	def __init__(self, ip, port, clientsocket):
     
    		threading.Thread.__init__(self)
    		self.ip = ip
    		self.port = port
    		self.clientsocket = clientsocket
    		print ("Connexion entrante depuis %s sur son port %s" % (self.ip, self.port, ))
     
    	# Réponse du serveur
    	def run(self): 
     
    		# C'est là ou çà coince
    		#
    		# XXXX
    		#
    		#
     
    		print ("Déconnexion du client %s..." % (self.ip))
     
    # Démarrage du programme
    if __name__ == "__main__":
     
    	# Validation des paramètres d'entrée
    	check_arguments(sys.argv[1:])
     
    	# Création d'une socket TCP IPV4
    	tcpsock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
     
    	# Ajout de l'option SO_REUSEADDR afin de rendre immédiatement le port disponible après utilisation
    	tcpsock.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
     
    	# On bind la socket sur l'IP et PORT demandés
    	tcpsock.bind((HOST,PORT))
     
    	# Bloucle continue
    	while True:
     
    		# Ecoute avec une file d'attente maximale de 5 connexions
    		tcpsock.listen(5)
     
    		# Accepte la connexion, en récupérant les informations de l'émetteur
    		(clientsocket, (ip, port)) = tcpsock.accept()
     
    		# Création de l'objet thread pour gérer la connexion
    		newthread = ClientThread(ip, port, clientsocket)
    		newthread.start()

    J'ai essayé pas mal de bout de code avec la commande urllib2.Request / urllib2.openurl, mais je n'arrive pas à reproduire la trame...

    Vous auriez une idée, une piste, un tuto ???

    Particularité, je suis obligé de rester sur une version python 2.7.

    Merci pour votre aide.
    Images attachées Images attachées  

Discussions similaires

  1. List-Component avec source de données xml
    Par santana2006 dans le forum iReport
    Réponses: 0
    Dernier message: 27/08/2009, 12h53
  2. [MySQL] lecteur divx utilisant des liens http avec base de donnée
    Par elfen_lied dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 01/05/2008, 21h09
  3. animation flash avec donnée XML
    Par clementine dans le forum Flash
    Réponses: 11
    Dernier message: 28/07/2006, 11h47
  4. probleme d'affichage de données XML avec XSL
    Par sundjata dans le forum XSL/XSLT/XPATH
    Réponses: 1
    Dernier message: 08/06/2006, 18h59
  5. Intégration des fichier XML dans une base de données MySQL
    Par bebemoundjou dans le forum XQUERY/SGBD
    Réponses: 8
    Dernier message: 25/11/2005, 22h41

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo