Connexion serveur/client python

tsic -  
sebsauvage Messages postés 33284 Date d'inscription   Statut Modérateur Dernière intervention   -
Bonjour,

Voilà, j'ai débuté recemment avec python et je veux faire une connexion client serveur (windows) par l'intermédiaire d'une interface QT Designer v 4. j'ai choisi ERIC v 4 comme IDE.

l'interface QT contient 2 champs Edittext(recep , emmision) l'un est réservé aux messages emis par le client et l'autre pour les messages renvoyés par le serveur; et un bouton connexion(conec).

le probléme, c'est qu'il y a eu une "petite" connexion entre l'interface et le serveur (sous Dos) mais le programme génère plusieurs erreurs (puis il se bloque) et il n'y a pas de synchronisation entre les messages client serveur.
SVP, pouvez vous m'aider.

le code :

Code :
.....
self.retranslateUi(MainWindow)
QtCore.QMetaObject.connectSlotsByName(MainWindow)
QtCore.QObject.connect(self.conec,QtCore.SIGNAL("clicked()"),self.so)

def so(self):
mySocket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
try:
mySocket.connect(( self.adressec.text() , int(self.numport.text())))
except socket.error:
self.emmision.setText("La connexion a echoue.")
sys.exit()
self.emmision.setText("Connexion etablie avec le serveur.")
msgServer= mySocket.recv(1024)
while 1:
if msgServer.upper() == "FIN" or msgServer=="":
break
self.recep.setText(msgServer)
a=self.emmision.text()
mySocket.send(a)
self.recep.setText(msgServer)
msgServer= mySocket.recv(1024)
print "Connexion interrompue."

mySocket.close()
.......Merci.
Configuration: Windows XP
Internet Explorer 7.0

3 réponses

  1. sebsauvage Messages postés 33284 Date d'inscription   Statut Modérateur Dernière intervention   15 684
     
    mmm... question... pour faire un client/serveur, pourquoi aller aussi bas niveau que le socket ?

    Alors qu'on a par exemple http qui marche très bien pour faire du client-serveurs ? (urllib2 par exemple).

    (socket pose divers problèmes)
    0
    1. tsic
       
      Merci,
      c'est que je suis débutante en python et on m'a imposé de travailler avec ce langage pour faire une connexion via interface QT designer.
      Le probleme est surtout au niveau de la synchronisation.
      Pouvez vous me donner une idée à propos de ce que vous avez dit "http".
      j'ai beau chercher mais il n'y a pas beaucoup de documentation sur la connexion.
      0
  2. sebsauvage Messages postés 33284 Date d'inscription   Statut Modérateur Dernière intervention   15 684
     
    pour faire une connexion

    Une connexion à quoi ?
    Quel protocole comprend le serveur sur lequel tu te connectes ?

    Est-ce que c'est toi aussi qui programme le serveur ?
    0
    1. tsic
       
      c'est un serveur simple on le teste localement mais il travaille aussi entre deux pcs.
      voici son code en python.



      from socket import *
      import socket, sys
      mySocket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
      try:
      mySocket.bind(( '127.0.0.1' , 84))
      except socket.error:
      print "La liaison du socket a l adresse choisie a echoue."
      sys.exit
      while 1:
      print "Serveur pret, en attente de requetes ..."
      mySocket.listen(5)
      connexion, adresse = mySocket.accept()
      print "Client connecte, adresse IP %s, port %s" % (adresse[0], adresse[1])

      connexion.send("Vous etes connecte au serveur Locale. Envoyez vos messages.")
      msgClient = connexion.recv(1024)
      while 1:
      print "C>", msgClient
      if msgClient.upper()=="FIN" or msgClient =="":
      break
      msgServeur = raw_input("S> ")
      connexion.send(msgServeur)
      msgClient = connexion.recv(1024)


      connexion.send("Au revoir !")
      print "Connexion interrompue."
      connexion.close()

      ch = raw_input("<R>ecommencer <T>erminer ? ")
      if ch.upper() == T :
      break


      Mon projet consiste à faire une interface avec QT designer qui permet la reception des données (au debut comme MSN messenger) Mais après on va recevoir des fichiers et les stocker.
      Si on test sur le dos ça fonctionne mais on integrant le code du client (pour se connaicter) avec le code de l'interface ça ne fonctionne pas.


      Merci
      0
  3. sebsauvage Messages postés 33284 Date d'inscription   Statut Modérateur Dernière intervention   15 684
     
    Bon je ne connais pas Qt, je ne pourrait donc pas t'aider là dedans.

    L'utilisation des sockets est-il une obligation ?
    Ou bien vous êtes autorisés à utiliser d'autres choses ? (HTTP, SOAP, XML-RPC...).

    Parceque les sockets posent divers problèmes (pas de détection de fin de flux, etc.)
    0