Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/337.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sockets/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在python中使用套接字传输文件时图像失真_Python_Sockets_File Transfer - Fatal编程技术网

在python中使用套接字传输文件时图像失真

在python中使用套接字传输文件时图像失真,python,sockets,file-transfer,Python,Sockets,File Transfer,当我使用此代码传输文本文件时,收到的文本文件与发送的文本文件完全相同。但是,当我使用此代码传输图像文件或视频文件时,会出现问题(失真),我不明白为什么 服务器代码: import socket import base64 filename = open("received.jpg","a") TCP_IP = '127.0.0.1' TCP_PORT = 5005 BUFFER_SIZE = 1024 s = socket.socket(socket.AF_INET, socket.SOC

当我使用此代码传输文本文件时,收到的文本文件与发送的文本文件完全相同。但是,当我使用此代码传输图像文件或视频文件时,会出现问题(失真),我不明白为什么

服务器代码:

import socket
import base64

filename = open("received.jpg","a")

TCP_IP = '127.0.0.1'
TCP_PORT = 5005
BUFFER_SIZE = 1024

s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.bind((TCP_IP, TCP_PORT))
s.listen(1)

conn, addr = s.accept()
data = conn.recv(16)
filesize = int(data)
iter = filesize//BUFFER_SIZE
i = 0

while (i < iter):
    data = conn.recv(BUFFER_SIZE)
    filename.write(data.decode('base64'))
    if not data:
        continue
    i = i + 1

data = conn.recv((filesize - (iter*BUFFER_SIZE)))
filename.write(data.decode('base64'))
filename.close()

conn.close()
几乎可以肯定

filename = open("received.jpg","ab")

OT:为什么
文件名
?这是一个文件,不是字符串。
filename = open("received.jpg","a")
filename = open("received.jpg","ab")