파이썬으로 작성된 내 Windows PC에 간단한 서버가있어 디렉토리에서 파일을 읽은 다음 TCP를 통해 클라이언트로 파일을 보냅니다.파이썬 서버가 TCP를 통해 잘린 이미지를 보내고 있습니다
HTML 및 자바 스크립트와 같은 파일을 클라이언트가 올바르게 수신합니다 (보낸 파일과 원본 파일이 일치 함).
이미지 데이터가 잘리지 않습니다.입니다.
이상하게도 이미지가 다른 길이로 잘리지 만 이미지마다 일관됩니다.
예를 들어 특정 1MB JPG는 항상 95 바이트로 수신됩니다. 7KB가되어야하는 다른 이미지는 120 바이트로 수신됩니다.
잘린 이미지 파일을 메모장 ++에서 열면 인 데이터는입니다. (유일한 문제는 파일이 너무 빨리 끝나는 것입니다).
파일의 끝 부분에 패턴이 표시되지 않습니다. 잘라 내기 직전과 직후의 chars/bytes는 이미지마다 다릅니다.
서버에서 파일을 읽는 세 가지 방법을 시도했지만 모두 동일한 결과가 나타납니다. 파일의 크기 콘솔에
print ("Cache size=" + str(os.stat(filename).st_size))
#1st attempt, using readlines
fileobj = open(filename, "r")
cacheBuffer = fileobj.readlines()
for i in range(0, len(cacheBuffer)):
tcpCliSock.send(cacheBuffer[i])
#2nd attempt, using line, same result
with open(filename) as f:
for line in f:
tcpCliSock.send(f)
#3rd attempt, using f.read(), same result
with open(filename) as f:
tcpCliSock.send(f.read())
스크립트 인쇄 : 여기
은 독서의 조각 파일의 전송입니다 읽기 및 바이트 수 matche 원본 이미지. 그래서 이것은 문제가 파견에 있음을 증명합니다, 그렇죠?문제가 전송과 관련된 경우 전체 이미지를 제대로 보내려면 무엇을 변경할 수 있습니까?
확인 된 작업! – Bort
항상 바이너리 모드를 사용하지 않는 이유가 있습니까? 그게 어떤 텍스트에 문제가되는 것입니까? – Bort