繁体   English   中英

使用python客户端将数据发送到Java服务器

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM