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
Partager