[英]Sending data using a python client to a java server
我已经在网上搜索了一段时间,现在正在寻找答案。
用于发送文件的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”的任何方法。
为什么会发生这种情况的任何线索?
我弄清楚了,由于某种原因发生了竞争情况,在python代码中放置了sleep(0,2)使得Java服务器能够响应。
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
sleep(0.2)
with open(path, mode='rb') as f:
s.sendall(f.read())
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.