我已经在网上搜索了一段时间,现在正在寻找这个问题的答案。
发送文件的python代码:
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
with open(path, mode='rb') as f:
s.sendall(f.read())
接收数据的java代码:
private BufferedInputStream bis = new BufferedInputStream(socket.getInputStream());
try (BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream(path))) {
while (true) {
int size = bis.read(by);
if (size > 0) {
bos.write(by, 0, size);
bos.flush();
total += size;
System.out.println(size + "(" + total + ")");
if (total == length) {
break;
}
}
}
}.....
我看到正在发送数据,并且我知道数据在 java 端的流中。但是 bis.read(by) 调用挂起,并拒绝读取数据,直到数据连接终止。
我怀疑它与java中的“flush”有关,但我找不到任何方法来使用python进行“flush”。
任何线索为什么会发生这种情况?