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 :

IP d'un serveur ?


Sujet :

Réseau/Web Python

  1. #1
    Membre du Club Avatar de stuffy
    Étudiant
    Inscrit en
    Juin 2008
    Messages
    70
    Détails du profil
    Informations personnelles :
    Âge : 30

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2008
    Messages : 70
    Points : 49
    Points
    49
    Par défaut IP d'un serveur ?
    Bonjours j'ai tiré un script d'un serveur et d'un client en python du cour de Gérard Swinnen les voici :

    Script du serveur :

    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
     
    # -*- coding: Latin-1 -*-
     
    # 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 = '127.0.0.1'
    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 a l'adresse choisie a echoue."
    	sys.exit()
     
    while 1:
    	# 3) Attente de la requête de connexion d'un client :
    	print "Serveur pret, en attente de requetes ..."
    	mySocket.listen(5)
    	# 4) Etablissement de la connexion :
    	connexion, adresse = mySocket.accept()
    	print "Client connecte, adresse IP %s, port %s" % (adresse[0], adresse[1])
     
    	# 5) Dialogue avec le client :
    	connexion.send("Vous etes connecte au serveur STUFFY DEVS. Envoyez vos messages.")
    	msgClient = connexion.recv(1024)
    	while 1:
    		print "Client =>", msgClient
    		if msgClient.upper() == "FIN" or msgClient =="":
    			break
    		msgServeur = raw_input("Serveur => ")
    		connexion.send(msgServeur)
    		msgClient = connexion.recv(1024)
     
    	# 6) Fermeture de la connexion :
    	connexion.send("Au revoir !")
    	print "Connexion interrompue."
    	connexion.close()
     
    	ch = raw_input("<R>ecommencer <T>erminer ? ")
    	if ch.upper() =='T':
    		break
    Script du client :

    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
     
    # -*- coding: Latin-1 -*-
     
    # Définition d'un client réseau rudimentaire
    # Ce client dialogue avec un serveur ad hoc
     
    import socket, sys
     
    HOST = '127.0.0.1'
    PORT = 50000
     
    # 1) création du socket :
    mySocket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
     
    # 2) envoi d'une requête de connexion au serveur :
    try:
    	mySocket.connect((HOST, PORT))
    except socket.error:
    	print "La connexion a echoue."
    	sys.exit()
    print "Connexion etablie avec le serveur."
     
    # 3) Dialogue avec le serveur :
    msgServeur = mySocket.recv(1024)
     
    while 1:
    	if msgServeur.upper() == "FIN" or msgServeur =="":
    		break
    	print "Serveur =>", msgServeur
    	msgClient = raw_input("Client => ")
    	mySocket.send(msgClient)
    	msgServeur = mySocket.recv(1024)
     
    # 4) Fermeture de la connexion :
    print "Connexion interrompue."
    mySocket.close()
    Donc mon serveur et sur le même ordi que mon client donc j'ai pour IP celui de l'ordi "127.0.0.1" (normalement ce sont les IP locaux) donc a ce stade tout marche maintenant je vaudrait placer mon serveur sur un ordi puis le client sur un autre qu'el ip doije mettre et comment le trouver
    ===========================
    #
    # Windows xp pour développer
    # Linux Ubuntu pour développer
    # Osx Mobile pour se relaxer
    #
    ===========================

  2. #2
    Expert éminent sénior
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 685
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 685
    Points : 30 974
    Points
    30 974
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par stuffy Voir le message
    Bonjours j'ai tiré un script d'un serveur et d'un client en python du cour de Gérard Swinnen les voici :

    Script du serveur :

    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
     
    # -*- coding: Latin-1 -*-
     
    # 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 = '127.0.0.1'
    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 a l'adresse choisie a echoue."
    	sys.exit()
     
    while 1:
    	# 3) Attente de la requête de connexion d'un client :
    	print "Serveur pret, en attente de requetes ..."
    	mySocket.listen(5)
    	# 4) Etablissement de la connexion :
    	connexion, adresse = mySocket.accept()
    	print "Client connecte, adresse IP %s, port %s" % (adresse[0], adresse[1])
     
    	# 5) Dialogue avec le client :
    	connexion.send("Vous etes connecte au serveur STUFFY DEVS. Envoyez vos messages.")
    	msgClient = connexion.recv(1024)
    	while 1:
    		print "Client =>", msgClient
    		if msgClient.upper() == "FIN" or msgClient =="":
    			break
    		msgServeur = raw_input("Serveur => ")
    		connexion.send(msgServeur)
    		msgClient = connexion.recv(1024)
     
    	# 6) Fermeture de la connexion :
    	connexion.send("Au revoir !")
    	print "Connexion interrompue."
    	connexion.close()
     
    	ch = raw_input("<R>ecommencer <T>erminer ? ")
    	if ch.upper() =='T':
    		break
    Script du client :

    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
     
    # -*- coding: Latin-1 -*-
     
    # Définition d'un client réseau rudimentaire
    # Ce client dialogue avec un serveur ad hoc
     
    import socket, sys
     
    HOST = '127.0.0.1'
    PORT = 50000
     
    # 1) création du socket :
    mySocket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
     
    # 2) envoi d'une requête de connexion au serveur :
    try:
    	mySocket.connect((HOST, PORT))
    except socket.error:
    	print "La connexion a echoue."
    	sys.exit()
    print "Connexion etablie avec le serveur."
     
    # 3) Dialogue avec le serveur :
    msgServeur = mySocket.recv(1024)
     
    while 1:
    	if msgServeur.upper() == "FIN" or msgServeur =="":
    		break
    	print "Serveur =>", msgServeur
    	msgClient = raw_input("Client => ")
    	mySocket.send(msgClient)
    	msgServeur = mySocket.recv(1024)
     
    # 4) Fermeture de la connexion :
    print "Connexion interrompue."
    mySocket.close()
    Donc mon serveur et sur le même ordi que mon client donc j'ai pour IP celui de l'ordi "127.0.0.1" (normalement ce sont les IP locaux) donc a ce stade tout marche maintenant je vaudrait placer mon serveur sur un ordi puis le client sur un autre qu'el ip doije mettre et comment le trouver
    Dans ton client tu inscrits l'adresse IP de ton serveur que tu pourras trouver sur ce dernier en tapant la commande "ifconfig -a" si t'es sous Linux ou "ipconfig /all" sous zindow.
    Ton serveur tu n'y touches pas, il n'a pas besoin d'adresse. Je pense même que tu pourrais mettre l'adresse "0.0.0.0", ça marcherait aussi...
    Mon Tutoriel sur la programmation «Python»
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
    Et on poste ses codes entre balises [code] et [/code]

  3. #3
    Membre éclairé
    Homme Profil pro
    Développeur
    Inscrit en
    Juin 2006
    Messages
    645
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur

    Informations forums :
    Inscription : Juin 2006
    Messages : 645
    Points : 709
    Points
    709
    Par défaut
    Si jamais tu connais le nom de la machine (son hostname), la classe socket propose une méthode pour en déterminer l'adresse IP.
    En substance, c'est quelque chose comme :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ip = socket.getaddrbyhost(nom_de_machine)
    Mais sans certitudes (je n'ai pas d'environnement Python ici et j'ai plutôt l'habitude de faire l'inverse).
    Toujours sans certitude, je pense qu'il existe aussi une méthode pour ouvrir une socket directement avec le hostname (sans avoir à passer par l'adresse IP).

    J'ai l'impression que tu te posais la question, donc je précise encore un petit détail : a priori, le client ne peut pas trouver tout seul le serveur sans qu'on lui fournisse une adresse (IP ou hostname).

    EDIT: J'ei trouvé ce lien qui traite de la même problématique que toi je pense : http://www.velocityreviews.com/forum...of-a-host.html
    « Se demander si un ordinateur peut penser est aussi intéressant que de se demander si un sous-marin peut nager. »
    -- Edsger Dijkstra

  4. #4
    Membre du Club Avatar de stuffy
    Étudiant
    Inscrit en
    Juin 2008
    Messages
    70
    Détails du profil
    Informations personnelles :
    Âge : 30

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2008
    Messages : 70
    Points : 49
    Points
    49
    Par défaut
    pour ce qui est de trouver mon ip je n'ai pas bien saisi ou placer ipconfig/all si c'est dans mon script ou dans une console quelconque

    la methode d'alban ma l'air efficace mai comment obtenir le nom de l'ordi je pense que sous linux c'est les noms monnoms-laptop... mais sous windows
    ===========================
    #
    # Windows xp pour développer
    # Linux Ubuntu pour développer
    # Osx Mobile pour se relaxer
    #
    ===========================

  5. #5
    Membre éclairé
    Homme Profil pro
    Développeur
    Inscrit en
    Juin 2006
    Messages
    645
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur

    Informations forums :
    Inscription : Juin 2006
    Messages : 645
    Points : 709
    Points
    709
    Par défaut
    Sous Linux comme sous Windows, tu obtiens le hostname en tapant la commande dans une console :
    « Se demander si un ordinateur peut penser est aussi intéressant que de se demander si un sous-marin peut nager. »
    -- Edsger Dijkstra

  6. #6
    Expert éminent sénior
    Avatar de Guigui_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Août 2002
    Messages
    1 864
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2002
    Messages : 1 864
    Points : 10 067
    Points
    10 067

  7. #7
    Membre du Club Avatar de stuffy
    Étudiant
    Inscrit en
    Juin 2008
    Messages
    70
    Détails du profil
    Informations personnelles :
    Âge : 30

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2008
    Messages : 70
    Points : 49
    Points
    49
    Par défaut
    tout marche pour un réseau wifi (du moins c'est le seul réseau que j'ai testé) je voudrait savoir si sa marche pour deux ordi connecter a internet un a un bout d'une ville et l'autre a l'autre bout d'une ville.
    ===========================
    #
    # Windows xp pour développer
    # Linux Ubuntu pour développer
    # Osx Mobile pour se relaxer
    #
    ===========================

  8. #8
    Membre éclairé
    Homme Profil pro
    Développeur
    Inscrit en
    Juin 2006
    Messages
    645
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur

    Informations forums :
    Inscription : Juin 2006
    Messages : 645
    Points : 709
    Points
    709
    Par défaut
    Une machine connectée à Internet n'aura a priori pas de nom de domaine. Donc ça ne rend pas la chose faisable dans tous les cas. Si c'est ce qui te concerne, je suggère l'abandon de l'utilisation du hostname.

    Si ça ne concerne qu'une machine :
    • soit tu utilises l'adresse IP (en paramètre de ton script Python si elle n'est pas fixe) et tu abandonnes l'idée du hostname ;
    • si ton IP est fixe, tu peux acheter un nom de domaine qui pointe vers l'IP de la machine (quelque chose de la forme chezmoi.net) ;
    • si ton IP n'est pas fixe, il existe des services adaptés, comme DynDNS (mais il en existe d'autres !). Tu installes un petit logiciel sur ta machine qui va déterminer en temps réel son adresse IP pour l'indiquer à un serveur connu (qui appartient à DynDNS) et permettra de toujours faire pointer une adresse de la forme cheztoi.dyndns.org vers l'IP actuelle de ta machine.
    « Se demander si un ordinateur peut penser est aussi intéressant que de se demander si un sous-marin peut nager. »
    -- Edsger Dijkstra

  9. #9
    Membre du Club Avatar de stuffy
    Étudiant
    Inscrit en
    Juin 2008
    Messages
    70
    Détails du profil
    Informations personnelles :
    Âge : 30

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2008
    Messages : 70
    Points : 49
    Points
    49
    Par défaut
    Ok merci pour toute vos réponse
    ===========================
    #
    # Windows xp pour développer
    # Linux Ubuntu pour développer
    # Osx Mobile pour se relaxer
    #
    ===========================

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 4
    Dernier message: 04/07/2002, 12h31
  2. Langage le mieux adapté pour application client serveur ?
    Par guenus dans le forum Débats sur le développement - Le Best Of
    Réponses: 4
    Dernier message: 17/06/2002, 15h46
  3. couper une connection avec un serveur corba
    Par pons dans le forum CORBA
    Réponses: 3
    Dernier message: 31/05/2002, 10h11
  4. [Kylix] IP d'un serveur;....
    Par yopziggy dans le forum EDI
    Réponses: 16
    Dernier message: 24/05/2002, 09h01

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