1

我有一个启动 Python 进程的 Java 应用程序。Python 进程打开一个套接字并侦听发送给它的传入数据。Python 将在我的 Java 应用程序需要能够读取的整个生命周期内打印到屏幕上。我的Java代码如下:

Runtime runTime = Runtime.getRuntime();
Process proc = runTime.exec(command, null, dir);
reader = new BufferedReader(new InputStreamReader(proc.getInputStream()));
while ((line = reader.readLine()) != null) 
{
    System.out.println(line);
}

这通常对我有用,但是一旦我的 Python 套接字侦听,我就不再接收输入流。如下所示,当我在 Python 脚本中注释掉我的接收时,我的 Java 应用程序将接收到两个打印件。

print "socket waiting to receive"
#data, addr = sock.recvfrom(self.BUFFER_SIZE) # this line causing problems
print "socket received data"

如果我取消注释接收,我将不再在 Java 中获得任何打印。我什至没有得到阻塞 recvfrom 语句之前发生的打印。如果我直接从命令行运行脚本,我仍然会得到“等待接收的套接字”,并且每当我接收到数据时都会打印出“套接字接收到的数据”。

4

0 回答 0