0
我一直在網上搜索一段時間尋找答案。使用python客戶端將數據發送到java服務器
用於發送文件的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」。
任何線索爲什麼會發生這種情況?