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

Python Discussion :

programmation socket


Sujet :

Python

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Novembre 2018
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

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

    Informations forums :
    Inscription : Novembre 2018
    Messages : 4
    Points : 7
    Points
    7
    Par défaut programmation socket
    Bonjour,

    je suis en train d'envoyer un fichier texte qui contient 90800 caractères vous trouvez ci-dessous le code de client et de serveur.
    le problème c'est que à la réception du texte au niveau serveur je reçoit 33304 caractères et à la prochaine tour de boucle "while" je reçoit le reste des caractères c'est comme si la taille de texte est divisée sur deux.
    Parfois tous les caractères sont bien transmit une seule fois comme un seul bloque.

    avez-vous une idée d'où il vient le problème de division de la taille de texte ?

    code 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
    import cv2
    import base64
    import socket
    import numpy as np
     
    host=''
    port=8000
    s=socket.socket(socket.AF_INET,socket.SOCK_STREAM)
    s.bind((host,port))
    s.listen(5)
     
    conn,addr=s.accept()
    print "connected to: "+str(addr[0])+" : "+str(addr[1])
     
    k=0
    while True:
        try:
            frame = conn.recv(9999999)
            file=open("text.txt","w")
            file.write(frame)
            file.close()
            print str(len(frame))
            if len(frame)>0 and k>2:
                 img = base64.b64decode(frame)
                 npimg = np.fromstring(img, dtype=np.uint8)
                 source = cv2.imdecode(npimg, 1)
                 cv2.imshow("Stream", source)
                 cv2.waitKey(1)
                 print str(len(frame))
                 continue
            else:
                 k+=1
        except KeyboardInterrupt:
            cv2.destroyAllWindows()
            break

    Code 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
    import cv2
    import base64
    import socket
    import numpy as np
     
    host='192.168.43.151'
    port=8000
    s=socket.socket(socket.AF_INET,socket.SOCK_STREAM)
    s.connect((host,port))
     
    camera = cv2.VideoCapture(0)  # init the camera
    k=0
    while True:
        try:
            grabbed, frame = camera.read()  # grab the current frame
     
            if grabbed :
                frame = cv2.resize(frame, (640, 480))  # resize the frame
                encoded, buff = cv2.imencode('.jpg', frame)
                jpg_as_text = base64.b64encode(buff)
                s.send(jpg_as_text)
                print str(len(jpg_as_text))
                file=open("textC.txt","w")
                file.write(jpg_as_text)
                file.close()
                continue

  2. #2
    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,

    Citation Envoyé par ofski Voir le message
    avez-vous une idée d'où il vient le problème de division de la taille de texte ?
    Parce que c'est comme çà que les sockets fonctionnent. Dans la documentation Python, vous avez un how-to qui explique même comment y survivre.

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

Discussions similaires

  1. Programmation socket: client UDP
    Par ThE_BuG87 dans le forum C++
    Réponses: 3
    Dernier message: 08/01/2007, 12h25
  2. GCC/compilation de programme socket
    Par hammag dans le forum GCC
    Réponses: 1
    Dernier message: 11/10/2006, 10h10
  3. Programmation sockets : limiter la bande passante
    Par e-t172 dans le forum Développement
    Réponses: 2
    Dernier message: 14/12/2005, 15h22
  4. Réponses: 2
    Dernier message: 31/05/2005, 09h50
  5. [Réseau] Programmation socket
    Par raj dans le forum Entrée/Sortie
    Réponses: 6
    Dernier message: 03/12/2004, 12h58

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