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 :

Comment créer une messagerie instantanée confidentielle en Python en réseau ?


Sujet :

Réseau/Web Python

  1. #1
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2014
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nièvre (Bourgogne)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Janvier 2014
    Messages : 3
    Points : 2
    Points
    2
    Par défaut Comment créer une messagerie instantanée confidentielle en Python en réseau ?
    Bonjour, je suis un élève de Terminale S et j'ai choisi la spécialité ISN, et je travaille en binôme sur un projet tout au long de l'année mais des difficultés se posent d'où ce post.
    Voilà, notre objectif est de créer en réseau, une messagerie instantanée confidentielle c'est à dire cryptée.
    Notre point de départ est un programme en Python avec un module socket qui permet de relier deux pcs.
    Voilà si vous avez des idées des questions ou des remarques n'hésitez pas,
    merci d'avance on compte sur vous !

  2. #2
    Expert éminent

    Avatar de deusyss
    Homme Profil pro
    Expert Python
    Inscrit en
    Mars 2010
    Messages
    1 659
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Expert Python
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2010
    Messages : 1 659
    Points : 8 442
    Points
    8 442
    Par défaut
    Bonjour,

    Je vous souhaite la bienvenue sur ce forum de la part de toute l'equipe de Developpez.com.

    Je ne voit pas de problematique posée dans ton post. Pour commencer, maintenant que tu as exposé ton projet, il faut nous donné plus d'info.

    Par exemple, as tu déjà des connaissances en Python? Quelle version utilises tu? Le projet doit-il disposer d'une IHM?

    On peut te donner des informations pour te guider, mais il nous faut avant tout des détails
    "La connaissance appartient à tout le monde" (Film Antitrust)

    Tout le nécessaire pour Python:
    *News/Accueil *Cours/tutoriels *FAQ
    *Forums *Outils dédiés *Mon espace personnel avec mes Articles, Cours et Tutoriels

  3. #3
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2014
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nièvre (Bourgogne)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Janvier 2014
    Messages : 3
    Points : 2
    Points
    2
    Par défaut Voilà notre avancée mais nous sommes bloqués
    Nous avons créés un serveur :

    # -*- coding: latin-1 -*-

    import socket # Import socket module

    s = socket.socket() # Create a socket object

    # on cherche les propriétés de la machine qui exécute le
    # serveur (l'hôte).
    nom_hote = socket.gethostname()
    # puis on récupère l'adresse IP de l'hôte
    addr_ip_hote = socket.gethostbyname(nom_hote)

    # on ouvre le port correspondant sur l'hote
    # le port peut être quelconque
    port = 12344
    s.bind((nom_hote, port))

    print "Serveur de test d'envoi de messages"
    print "->nom du serveur %s"%nom_hote
    print "->IP de l'hôte :%s"%addr_ip_hote
    print "->port :%i"%port
    print "Serveur démarré en attente d'une connexion ..."

    # attente de la connexion
    s.listen(5)

    # établissement de la connection avec le client
    c, addr = s.accept()
    addr_ip_client = addr[0]
    print "Connection recue delpuis le client d'adresse",addr_ip_client
    # on envoi un message au client
    c.send('Bonjour, ici le serveur!')

    while True:
    msgClient = c.recv(1024)
    print "C>", msgClient
    if msgClient.upper()== "FIN" or msgClient == "":
    break
    msgServeur = raw_input("S> ")
    c.send(msgServeur)
    # on ferme la connexion
    c.close()

    et un client :

    #!/usr/bin/python
    # This is client.py file

    #utilisation du module "socket"
    import socket

    # creation d'un socket
    s = socket.socket()

    # il faut connaitre le nom ou l'adresse ip du serveur
    # auquel on se connecte
    port = 12344
    addr_ip = "10.158.33.120"
    # connexion a l'hote
    s.connect((socket.gethostbyaddr(addr_ip)[0], port))

    # reception de 1024 octets
    while True:
    print s.recv(1024)
    s.send("Bonjour ici le client")
    if msgClient.upper()== "FIN" or msgClient == "":
    break
    msgServeur = raw_input("S> ")
    c.send(msgServeur)
    # fermeture du socket
    s.close()

    Mais nous n'arrivons pas à établir un dialogue, help !

  4. #4
    Expert éminent

    Avatar de deusyss
    Homme Profil pro
    Expert Python
    Inscrit en
    Mars 2010
    Messages
    1 659
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Expert Python
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2010
    Messages : 1 659
    Points : 8 442
    Points
    8 442
    Par défaut
    Es tu sous Linux ou Windows? Quelle version de Python est utilisée?

    Cela peut avoir son importance dans l'explication que rien ne marche.

    EDIT: pour poster du code, utilise le bouton "#" disponible en haut de l'editeur de post
    "La connaissance appartient à tout le monde" (Film Antitrust)

    Tout le nécessaire pour Python:
    *News/Accueil *Cours/tutoriels *FAQ
    *Forums *Outils dédiés *Mon espace personnel avec mes Articles, Cours et Tutoriels

  5. #5
    Membre éprouvé

    Homme Profil pro
    Ingénieur
    Inscrit en
    Août 2010
    Messages
    654
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

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

    Informations forums :
    Inscription : Août 2010
    Messages : 654
    Points : 1 150
    Points
    1 150
    Par défaut
    Salut.

    Le sujet m'intéresse mais je pense qu'il ne faut pas partir dans tous les sens et se focaliser sur un probleme à la fois.

    La mise en oeuvre (le code) est l'aboutissement d'une réflexion (ici la documentation sur les notions de réseaux, serveurs, clients, échanges de données, la *cryptographie*, l'architecture logicielle...). Tout cela n'est pas propre au langage et doit être clarifier avant. Alors, oui, ça fait beaucoup à apprendre, mais c'est ça qui est bon!

    Je ne m'y connais pas assez pour tenter de corriger ton probleme de communication entre le server et le client. Deusyss va trouver ça rapidement j'en suis sûr.


    J'en viens à ce qui m'a poussé à répondre. Il y éventuellement moyen de crypter et décrypter tes messages via gnupg. Ce pragramme est dédié au chiffrement des mails, mais en fouillant il ya peut-être moyen de l'adapter aux messages instantanés. Il existe un wrap en python:
    http://pythonhosted.org/python-gnupg/
    http://www.saltycrane.com/blog/2011/...g-gpg-example/

    Pour plus tard, hein

    Ju

  6. #6
    Expert éminent

    Avatar de deusyss
    Homme Profil pro
    Expert Python
    Inscrit en
    Mars 2010
    Messages
    1 659
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Expert Python
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2010
    Messages : 1 659
    Points : 8 442
    Points
    8 442
    Par défaut
    J'attends toujours les reponses afin de pouvoir pleinement analyser le code, mais je repond au post de Julien N.

    GnuPG est en effet une tres bonne solution pour le cryptage. Autre solution sinon, alternative ce post.

    Il était là aussi question de cryptage.
    "La connaissance appartient à tout le monde" (Film Antitrust)

    Tout le nécessaire pour Python:
    *News/Accueil *Cours/tutoriels *FAQ
    *Forums *Outils dédiés *Mon espace personnel avec mes Articles, Cours et Tutoriels

  7. #7
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 287
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 287
    Points : 36 776
    Points
    36 776
    Par défaut
    Salut,

    Il faut regarder plus précisément ce que font vos "client" et "serveur".
    le serveur:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    # server
    while True:
        msgClient = c.recv(1024)
        print "C>", msgClient
        if msgClient.upper()== "FIN" or msgClient == "":
            break
        msgServeur = raw_input("S> ")
        c.send(msgServeur)
        # on ferme la connexion
        c.close()
    le client:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    while True:
        print s.recv(1024)
        s.send("Bonjour ici le client")
        if msgClient.upper()== "FIN" or msgClient == "":
           break
        msgServeur = raw_input("S> ")
        c.send(msgServeur)
        # fermeture du socket
        s.close()
    "précisément" = une feuille de papier avec 5 colonnes:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    user | client | messages | serveur | user
    Et dans ces colonnes vous représentez les messages échangés.

    Vu votre programmation (synchrone), si vous expédiez un message alors que de l'autre cote çà attend une entrée clavier, ça va se bloquer.

    Le soucis n'est pas dans le code mais dans le "protocole" qu'il réalise.

    Ce qui rejoint les remarques de Julien_N.

    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  8. #8
    Membre éprouvé

    Homme Profil pro
    Ingénieur
    Inscrit en
    Août 2010
    Messages
    654
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

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

    Informations forums :
    Inscription : Août 2010
    Messages : 654
    Points : 1 150
    Points
    1 150
    Par défaut
    Deusyss,

    Je ne me souvenais plus de ce post. C'es une très bonne idée. Sauf imperatifs du PO, mettre en place un système de chiffrage "simple' mais entièrement maison, est sans doute largement suffisant et plus pédagogique.

    J

  9. #9
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2014
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nièvre (Bourgogne)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Janvier 2014
    Messages : 3
    Points : 2
    Points
    2
    Par défaut
    Bonsoir amis internautes, déjà merci de vous intéresser à notre projet, alors nous sommes sous Windows avec la version 3.3 de Python. Mais nous apprenons depuis cette année alors si vous avez des idées de code pour réussir à échanger déjà des messages ça serait super car nous peinons avec notre faible niveau. Cordialement.

  10. #10
    Membre averti
    Homme Profil pro
    Développeur en formation
    Inscrit en
    Juillet 2013
    Messages
    300
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur en formation
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juillet 2013
    Messages : 300
    Points : 413
    Points
    413
    Par défaut
    Vaste question...
    Je suis sur un projet encore plus grand, pour ce qui est d'une messagerie instantanée et cryptée (plus sous la forme d'un tchat), j'en ai déjà écrit une, mais elle a un gros défaut, le même que votre script (du moins il devrait l'avoir) : il ne fonctionne que sur réseau local.
    Je fais donc un programme de visiophonie, qui marche pour le téléphone sur réseau local, le débit est suffisant, mais je l'ai testé sur VPN et ça ne marche pas, le débit est insuffisant...
    Enfin pour en revenir au problème, déjà, je vous conseille d'utiliser le module threading, pour pouvoir lancer un envoi de données et une réception en parallèle.
    Après, je sèche toujours pour ce qui est du problème de communication hors réseau local, j'ai trouvé une solution, pas idéale et non testée : ouvrir son routeur aux connexions entrantes, à nos risques et périls.
    Pour ce qui est du cryptage, il existe de nombreux algorithmes déjà écris et libres, il me semble (des modules, il y a déjà hashlib dans la bibliothèque standart, je ne m'y connais pas trop). Sinon un peu de réflexion ne peut pas faire de mal.
    J'espère que ce projet aboutira , surtout avec l'espionnage américain qui rode .
    Bouddha : Tout n'est qu'illusion en ce bas monde.
    Jésus : Tout est amour divin.
    Einstein : Tout est relatif dans cet espace-temps.
    Moi : Tout est binaire sur ce forum.

  11. #11
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 287
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 287
    Points : 36 776
    Points
    36 776
    Par défaut
    Citation Envoyé par stalacta Voir le message
    Enfin pour en revenir au problème, déjà, je vous conseille d'utiliser le module threading, pour pouvoir lancer un envoi de données et une réception en parallèle.
    Les modules asyncore et asynchat sont fait pour ça - et n'utilisent pas de threads mais une variante de select -.
    Mais, il faut savoir ce qu'est programmation réseau et asynchrone ou événementielle pour arriver a lire la doc et envisager de les utiliser efficacement.

    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  12. #12
    Expert éminent

    Avatar de deusyss
    Homme Profil pro
    Expert Python
    Inscrit en
    Mars 2010
    Messages
    1 659
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Expert Python
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2010
    Messages : 1 659
    Points : 8 442
    Points
    8 442
    Par défaut
    Citation Envoyé par stalacta Voir le message
    Pour ce qui est du cryptage, il existe de nombreux algorithmes déjà écris et libres, il me semble (des modules, il y a déjà hashlib dans la bibliothèque standart, je ne m'y connais pas trop)
    Hashlib est plutot orienté Mot de passe. Je pense que tout le monde a entendu parler de cracking ou des mot de passe avait été dérobé car stocké en clair. Par stocké en clair, on entend stocké sans cryptage.

    Dans le cas de hashlib on parle de stockage crypté. Le fonctionnement est le suivant: vous renseigner un mot de passe. Ce dernier est passé à la moulinette(avec hashlib par exemple), puis stocké en base. Lorsque vous vous identifé, le mot de passe saisi est passé à la moulinette, et le résultat comparé à ce qui est en base. Identique? le mot de passe est bon, mauvais sinon.

    Hashlib ne fonctionne que dans un sens. Pas de décryptage possible. C'ets pour cette raison que lorsque vous indiquer que vous avez perdu votre mot de passe que on vous renvoie un MDP qui n'est pas votre MDP initial, mais une nouvelle generation temporaire.

    Cette pour cette même raison, que si un jour, suite à une demande de perte de MDP, on vous envoie votre MDP initial, il faut vous poser la question de la sécurité de vos comptes.
    "La connaissance appartient à tout le monde" (Film Antitrust)

    Tout le nécessaire pour Python:
    *News/Accueil *Cours/tutoriels *FAQ
    *Forums *Outils dédiés *Mon espace personnel avec mes Articles, Cours et Tutoriels

  13. #13
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    133
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2008
    Messages : 133
    Points : 69
    Points
    69
    Par défaut
    Bonjour à la communauté python !

    Je profite de ce fil qui tombe à vrai dire à pic pour moi.

    Je cherche à faire une messagerie instantanée tout comme Azertyuiop58 (en réseau local avec un collègue car plus de net send depuis windowxs XP sur nos bécanes).
    Pour tout vous dire, je suis une daube en programmation et j'ai cherché dans les archives les deux scripts que voici et qui fonctionnent :

    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
     
    # -*- coding: Latin-1 -*-
     
     
    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

    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
    # -*- coding: Latin-1 -*-
     
     
    import socket, sys
     
    HOST = 'mon adresse IP'
    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()

    C'est à peu de chose près le même que Azertyuiop58 il me semble.

    Mais voilà, petit os que je tente de vous expliquer :
    On communique ok, mais il faut attendre obligatoirement la réponse de l'autre pour pouvoir à nouveau dialoguer.
    En gros, on ne peut pas écrire deux messages à la suite. On les capte certes, mais une fois que l'autre à répondu donc ça fait un sacré merdier dans le dialogue.
    Je ne sais pas si je suis clair...

    Un dernier truc, au bout d'un certain les fenêtres de dialogue se ferment. Y a t-il un moyen de les laisser pour un temps indéterminé ?

    Désolé, ça fait peut-être beaucoup de choses à la fois mais si vous pouviez m'aiguiller un poil, ça serait top !

    Merci d'avance

  14. #14
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 287
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 287
    Points : 36 776
    Points
    36 776
    Par défaut
    Citation Envoyé par florent77 Voir le message
    En gros, on ne peut pas écrire deux messages à la suite. On les capte certes, mais une fois que l'autre à répondu donc ça fait un sacré merdier dans le dialogue.
    Je ne sais pas si je suis clair...
    Il vous faut passer par select et les joies de la programmation asynchrone.

    Je cherche à faire une messagerie instantanée tout comme Azertyuiop58 (en réseau local avec un collègue car plus de net send depuis windowxs XP sur nos bécanes).
    Soit vous êtes presses et vous vous rabattez sur des freewares. Soit vous voulez apprendre a programmer avec Python et il faut commencer par apprendre les bases. C'est plus long....

    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  15. #15
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    133
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2008
    Messages : 133
    Points : 69
    Points
    69
    Par défaut
    Bonjour wiztricks

    Pour les freewares, c'est nase, on ne peut rien télécharger au boulot, tout est bloqué.

    Pour le select, oups..... effectivement ça va être long...

    Je pensais qu'il y aurait juste un petit changement à faire dans le script.

    Merci.

  16. #16
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 287
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 287
    Points : 36 776
    Points
    36 776
    Par défaut
    Citation Envoyé par florent77 Voir le message
    Pour les freewares, c'est nase, on ne peut rien télécharger au boulot, tout est bloqué.
    Il ne devraient pas vous laisser coder alors.
    Jetez un œil a asynchat, il suffit de l'adapter un peu.
    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  17. #17
    Candidat au Club
    Homme Profil pro
    Lycéen
    Inscrit en
    Mars 2014
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Lycéen

    Informations forums :
    Inscription : Mars 2014
    Messages : 2
    Points : 2
    Points
    2
    Par défaut
    Bonjours à vous tous, je viens de m'inscrire car votre discution m'interesse énormément. En effet, moi et mes deux camarades (lycéen en spé ISN également) avons le même projet initial qui est de créer une messagerie instantanée cryptée, quelle belle coincidence n'ect-ce pas ?! Nous somme en train de créer le code principal, et les interfaces en parallèle, quant à moi je suis chargé de la partie réseau. A la vue de vos commentaire je vous avous ne pas tout comprendre concernant "select" et a"synchrone " car nous manquons de connaissance et avons le même soucis qui est de ne pouvoir envoyer qu'un seul message à la fois car nous devons attendre que l'autre réponde. En attendant vos réponses, je vous remercie par avance. Je vous transmet mes deux codes serveur/client et nous serions ravis de vous transmettre nos autres codes.

    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
    import socket
     
    hote = "172.17.164.72" #127.0.0.1 est l'ordinateur lui-même : localhost
    # Mettre ici l'adresse IP du serveur s'il est sur un autre ordinateur
    port = 1234 #le port de communication avec le serveur
     
    connexion_avec_serveur = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
    connexion_avec_serveur.connect((hote, port))
    print("Connexion établie avec le serveur sur le port {}".format(port))
     
    msg_a_envoyer = b""
    while msg_a_envoyer != b"fin":
        msg_a_envoyer = input("> ")
        # L'instruction ci-dessous peut lever une exception si le message
        # réceptionné comporte des caractères spéciaux hors ASCII car il
        # faudrait définir le format d'encodage
        msg_a_envoyer = msg_a_envoyer.encode()
        # On envoie le message
        connexion_avec_serveur.send(msg_a_envoyer)
        msg_recu = connexion_avec_serveur.recv(1024)
        print(msg_recu.decode()) # même remarque que si dessus
     
    print("Fermeture de la connexion")
    connexion_avec_serveur.close()
    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
    import socket
    import urllib.request
    import os
     
    def parse_string(data,beginTag,endTag):
       result=[]
       startPos = data.find(beginTag)
       while startPos > -1:
          endPos = data.find(endTag,startPos+1)
          if endTag == -1:
             break
          else:
             result.append(data[startPos+len(beginTag):endPos])
             startPos = data.find(beginTag,endPos+1)
       return result
     
    s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
    s.connect(('google.com', 0))
     
    hote = ''
    port = 1234 #on définit le port où le serveur écoute
     
    connexion_principale = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
    connexion_principale.bind((hote, port))
    connexion_principale.listen(5)
    print("mon IP est "+s.getsockname()[0])
    print("Le serveur écoute à présent sur le port {}".format(port))
     
    connexion_avec_client, infos_connexion = connexion_principale.accept()
     
    msg_recu = b""
    #msg_recu est un binaire car les ordinateurs communiquent en binaire
     
    while msg_recu != b"fin":
        msg_recu = connexion_avec_client.recv(1024)
        # L'instruction ci-dessous peut lever une exception si le message
        # réceptionné comporte des caractères spéciaux hors ASCII car il
        # faudrait définir le format de décodage
        print(msg_recu.decode())
        message_a_envoyer= input("> ")
        message_reponse=message_a_envoyer.encode()
        connexion_avec_client.send(message_reponse)
     
    print("Fermeture de la connexion")
    connexion_avec_client.close()
    connexion_principale.close()

  18. #18
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2014
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 27
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2014
    Messages : 2
    Points : 3
    Points
    3
    Par défaut
    Bien le bonjour amis internautes,
    Vous savez quoi ? Une coïncidence de plus !
    En effet, moi et mes deux camarades sommes en TS spé ISN et nous avons choisi de réaliser ce projet de tchat crypté il y a deux mois.
    Nous n'avons pas réellement avancé depuis en raison de pas mal de cours loupés et d'absences de membres du groupes. Nous sommes donc intéressés par ce poste qui pourrait nous aider. Nous pourrons poster quelques lignes de python pour aider mais ce que nous avons pour l'instant n'est guère différent de vous.
    Au plaisir de s'entraider dans ce projet pour le bac.

  19. #19
    Membre éprouvé

    Homme Profil pro
    Ingénieur
    Inscrit en
    Août 2010
    Messages
    654
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

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

    Informations forums :
    Inscription : Août 2010
    Messages : 654
    Points : 1 150
    Points
    1 150
    Par défaut
    Eh ben si vous vous entraidez tous les 6-7, il n'y a pas de raison que vous n'y arriviez pas.

    Ju

  20. #20
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2014
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 27
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2014
    Messages : 2
    Points : 3
    Points
    3
    Par défaut
    Bonjour à tous, notre projet avance peu à peu mais nous rencontrons des problèmes en ce qui concerne le réseau. Nous avons choisi de le faire en LAN et la connexion marche, mais nos programmes nous permettent bizarrement seulement de connecter un seul client au serveur, le deuxième se pouvant pas se connecter (long temps d'attente et programme qui ne répond pas). On a essayé sur plusieurs ordis et ça marche pas trop donc voila vous croyez que ceci est du à quoi ? Perso je pense que le programme de réseau tient la route, la je peux pas le fournir mais bon peut-être qu'un défaut serait à l'origine...

Discussions similaires

  1. Tor veut créer une messagerie instantanée anonyme
    Par zoom61 dans le forum Logiciels Libres & Open Source
    Réponses: 0
    Dernier message: 03/03/2014, 10h09
  2. Créer une messagerie instantanée internet
    Par darkvador2002 dans le forum Débuter
    Réponses: 4
    Dernier message: 28/04/2009, 14h09
  3. Comment créer une dll python (.pyd)
    Par devconf77 dans le forum Interfaçage autre langage
    Réponses: 4
    Dernier message: 01/02/2008, 20h29
  4. [D7] Comment feriez-vous une messagerie instantanée façon MSN ?
    Par ero-sennin dans le forum Web & réseau
    Réponses: 37
    Dernier message: 09/08/2007, 20h53
  5. Comment créer une aplet python
    Par acieroid dans le forum Interfaçage autre langage
    Réponses: 10
    Dernier message: 03/02/2006, 11h13

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