Python: socket 传输文件不全的问题
出现问题
实际上做的这个是在c语言这边发送 python这边接收,发送bufsize是1024,接收这边也接收1024
data = to_client.recv(1024)
接收端这边大概就是先收一个文件大小 然后开始按照这个文件大小来接收,每当接收后都会将这个文件大小(剩余的)-1024
data = to_client.recv(1024) file_length -= 1024
以此导致了另一个问题就是在我debug的时候一步一步是可以正常接收的,但run之后就不行,报的错一看就是和字节流没对应上。
原因
找了一些资料发现Python Socket传输文件不完整 说的比较明白,recv()里面的bufsize是最大长度而不是一定这么长。
于是测试了一下,每次接收打印一下data长度,发现
1024 436 588 1024 436 588 1024
果然如此
这就好办了 修改一下
data = to_client.recv(1024) file_length -= len(data)
就好了。