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 :

2 Socket 1 Page


Sujet :

Réseau/Web Python

  1. #1
    Membre expérimenté
    Avatar de Luke spywoker
    Homme Profil pro
    Etudiant informatique autodidacte
    Inscrit en
    Juin 2010
    Messages
    1 077
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Etudiant informatique autodidacte

    Informations forums :
    Inscription : Juin 2010
    Messages : 1 077
    Points : 1 742
    Points
    1 742
    Par défaut 2 Socket 1 Page
    je suis bloquer car je n'arrive pas a connecter 2 socket differentes parametrer comme ceçi:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    sock=Socket(socket.AF_INET, socket.SOCK_DGRAM, socket.IPPROTO_UDP)
    avec bien sur avec des ports et adresses differents pour chaque socket, a une page internet...
    Est-ce normale que le serveur n'accepte qu'une connexion socket, pourtant avec un navigateur on peut se connecter combien de fois on veut a une meme page.
    Bon je suis pas très informer sur le sujet et vos conseils ou explications seront la bienvenue si tout ceçi est bien normal.

    Peut etre un probleme de config ou de protocol ?

    Question subsidiaire: est ce que le projet pygoogle est vraiment mort, car j'ai réussi a l'installer mais ce ne marche pas.

    Sur ce, bonne pythonnerie et nouvel année.
    Pour faire tes armes:
    Use du présent pour construire ton futur sinon use de ce que tu as appris auparavant.
    Et sois toujours bien armé avant de te lancer.
    Le hasard ne sourit qu'aux gens préparés...
    Site: Website programmation international (www.open-source-projects.net)
    Site: Website imagerie 3D (www.3dreaming-imaging.net)
    Testez aux moins pendant une semaine l'éditeur avec terminaux intégrées it-edit Vous l'adopterai sûrement !
    FUN is HARD WORK !!!

  2. #2
    Rédacteur
    Avatar de darrylsite
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    1 299
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juillet 2007
    Messages : 1 299
    Points : 2 501
    Points
    2 501
    Par défaut
    Je ne connais pas vraiment python, mais je sais que le protocole UDP n'est pas orienté connexion. Avec UDP, on peut envoyer et recevoir des messages de manière asynchrone.

    Pour pouvoir recevoir plusieurs requêtes, il faut alors boucler sur l'écoute des messages entrantes.

  3. #3
    Membre expérimenté
    Avatar de Luke spywoker
    Homme Profil pro
    Etudiant informatique autodidacte
    Inscrit en
    Juin 2010
    Messages
    1 077
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Etudiant informatique autodidacte

    Informations forums :
    Inscription : Juin 2010
    Messages : 1 077
    Points : 1 742
    Points
    1 742
    Par défaut
    Je sais...
    mais les 2 socket étant bind(adr_n1 != adr_n2, port_1 != port_n2)
    et la connexion étant établie avec le tuple (adr, port)
    Je ne comprend pas pourquoi le serveur ne m'autorise qu'une connexion socket a la fois.
    et par aileur j'ai essayer avec 2 socket paramétrer SOCK_STREAM(=tcp/ip) sa ne marche toujours pas.
    Si vous savez d'ou vient le problème merci de poster une réponse.
    Pour faire tes armes:
    Use du présent pour construire ton futur sinon use de ce que tu as appris auparavant.
    Et sois toujours bien armé avant de te lancer.
    Le hasard ne sourit qu'aux gens préparés...
    Site: Website programmation international (www.open-source-projects.net)
    Site: Website imagerie 3D (www.3dreaming-imaging.net)
    Testez aux moins pendant une semaine l'éditeur avec terminaux intégrées it-edit Vous l'adopterai sûrement !
    FUN is HARD WORK !!!

  4. #4
    Rédacteur
    Avatar de darrylsite
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    1 299
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juillet 2007
    Messages : 1 299
    Points : 2 501
    Points
    2 501
    Par défaut
    Citation Envoyé par Luke spywoker Voir le message
    Je sais...
    mais les 2 socket étant bind(adr_n1 != adr_n2, port_1 != port_n2)
    et la connexion étant établie avec le tuple (adr, port)
    Je ne comprend pas pourquoi le serveur ne m'autorise qu'une connexion socket a la fois.
    et par aileur j'ai essayer avec 2 socket paramétrer SOCK_STREAM(=tcp/ip) sa ne marche toujours pas.
    Si vous savez d'ou vient le problème merci de poster une réponse.
    Tu veux dire que tu essaies d'utiliser le même port pour deux sockets sur un meme pc?

    Si c'est le cas, alors c'est normal que ça ne marche pas.

  5. #5
    Membre expérimenté
    Avatar de Luke spywoker
    Homme Profil pro
    Etudiant informatique autodidacte
    Inscrit en
    Juin 2010
    Messages
    1 077
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Etudiant informatique autodidacte

    Informations forums :
    Inscription : Juin 2010
    Messages : 1 077
    Points : 1 742
    Points
    1 742
    Par défaut
    Non je dis que les socket sont definis sur des ports différents, grace a bind, et le port de destination est effectivement le meme ce qui ne devrait pas etre un problème pour un serveur par ailleur j'ai réussi avec la commande connect_ex.

    Mais maintenant j'ai un problème de tout autre nature qui est de passer une instance de socket comme argument a la commande Popen de subprocess qui soit:

    avec shell=False peut prendre une sequence de string comme argument avec en premier élément la commande a lancer et les autres éléments commes arguments de cette commande.

    ou avec shell=True un string qui contient toute la commande.

    mais j'aimerai passer une instance de socket comme argument et en string ce n'en est plus une donc sa ne marche pas...

    Alors si vous pouvez m'aider ou plutot m'éclairer sur la sortie standart, sujet que je connait pas du tout, ce qui me permettrait d'afficher des messages de confirmation et m'apprendrai un peu plus sur python pour parfaire mon instruction.

    Pour clarifier ma demande d'information consideront l'exemple suivant:
    Sachant que monfic.py est un fichier qui contient le code suivant:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    def printer(a) :
      print a
     
    printer(a)
    et le code principal:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    import subprocess
    a=['monfic.py', 'message de confirmation']
    b=subprocess.Popen(a, executable='python')
    Comment puis-je obtenir le message de confirmation dans le code principal, en me servant des entrées, sorties standart ?
    J'ai perquisitionner le module sys mais il semble que les std* ne sont que des attributs (pointeurs ?) sur les entrées, sorties standart dans ce module.

    Merci de vos réponses.
    Pour faire tes armes:
    Use du présent pour construire ton futur sinon use de ce que tu as appris auparavant.
    Et sois toujours bien armé avant de te lancer.
    Le hasard ne sourit qu'aux gens préparés...
    Site: Website programmation international (www.open-source-projects.net)
    Site: Website imagerie 3D (www.3dreaming-imaging.net)
    Testez aux moins pendant une semaine l'éditeur avec terminaux intégrées it-edit Vous l'adopterai sûrement !
    FUN is HARD WORK !!!

  6. #6
    Expert confirmé Avatar de PauseKawa
    Homme Profil pro
    Technicien Help Desk, maintenance, réseau, système et +
    Inscrit en
    Juin 2006
    Messages
    2 725
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Technicien Help Desk, maintenance, réseau, système et +
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2006
    Messages : 2 725
    Points : 4 005
    Points
    4 005
    Par défaut
    Bonjour Luke spywoker,

    Si la dernière question ne concerne que les entrées/sorties tu devrais en faire un sujet à part.
    Par contre (et j'ai bien peur de ne pas avoir compris) si cela concerne socket n'est il pas plus facile de faire communiquer les deux scripts ?
    Exemple (bidon) qui m'a servi de base dans mon projet de découverte de socket (remote shell pour passer les proxy...):
    Client
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
        def ExecCommand(self):
            pipe = Popen(self.command, shell=True, stdout=PIPE, stdin=PIPE, stderr=PIPE)
            output = pipe.communicate()
            if output[0] == '':
                self.sock.send('Command error' + self.EndMarker)
            else:
                output = output[0]
                self.sock.send(str(output) + self.EndMarker)
    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
         def recvall():
            _reponse=[]
            _rcvdata=''
            while True:
                _rcvdata=connect.recv(20)
                if EndMarker in _rcvdata:
                    _reponse.append(_rcvdata[:_rcvdata.find(EndMarker)])
                    break
                _reponse.append(_rcvdata)
                if len(_reponse)>1:
                    _veriflist=_reponse[-2]+_reponse[-1]
                    if EndMarker in _veriflist:
                        _reponse[-2]=_veriflist[:_veriflist.find(EndMarker)]
                        _reponse.pop()
                        break
            return ''.join(_reponse)
     
        reponse = recvall().replace(EndMarker, '')
        print reponse
    @+

    Edit: J'allais oublier : La réponse à ta question sur subprocces est dans mon code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
            pipe = Popen(self.command, shell=True, stdout=PIPE, stdin=PIPE, stderr=PIPE)
            output = pipe.communicate()
    @++
    Merci d'utiliser le forum pour les questions techniques.

Discussions similaires

  1. socket et lecture en boucle de pages web
    Par yaumme dans le forum Langage
    Réponses: 1
    Dernier message: 07/04/2009, 19h53
  2. Recuper une page web "index.html" d'un serveur avec les sockets
    Par mansour67 dans le forum Développement
    Réponses: 3
    Dernier message: 18/10/2008, 13h42
  3. Communication page web (AJAX/CGI) et Programme en C++ via sockets
    Par sagopa dans le forum Serveurs (Apache, IIS,...)
    Réponses: 2
    Dernier message: 01/10/2008, 12h07
  4. Réponses: 2
    Dernier message: 17/08/2007, 14h44
  5. [socket] lire une page web
    Par goonies dans le forum Windows
    Réponses: 1
    Dernier message: 19/11/2005, 16h55

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