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