如何不断地将标准输出发送到我的python TCP服务器? 我有一个简单的PythonEcho服务器,它使用套接字,向客户机回送随机数 我有另一个程序,它每2秒将值打印到标准输出

如何不断地将标准输出发送到我的python TCP服务器? 我有一个简单的PythonEcho服务器,它使用套接字,向客户机回送随机数 我有另一个程序,它每2秒将值打印到标准输出,python,stdout,Python,Stdout,如果它只是一个脚本,我可以像这样重定向“stdout”| python script.py,然后像这样在脚本中获取它data=sys.stdin.read()。但它是一个服务器,不能像这样工作 问题:如何编写这样一个python服务器,它可以侦听/获取Debian上的标准输出值,并进一步传递它们。我不是要一个完整的代码。考虑到这个程序是一个服务器,我只想了解一下获取标准输出的一些想法 持续不断的值>标准输出>服务器.py>进一步发送值我认为您需要类似的东西。在该示例中,考虑 DMESG < /代

如果它只是一个脚本,我可以像这样重定向“stdout”| python script.py,然后像这样在脚本中获取它
data=sys.stdin.read()
。但它是一个服务器,不能像这样工作

问题:如何编写这样一个python服务器,它可以侦听/获取Debian上的标准输出值,并进一步传递它们。我不是要一个完整的代码。考虑到这个程序是一个服务器,我只想了解一下获取标准输出的一些想法


持续不断的值>标准输出>服务器.py>进一步发送值

我认为您需要类似的东西。在该示例中,考虑<代码> DMESG < /代码>作为您的号码生成器,以及<代码> GRP<代码>作为您的套接字服务器;但是,您只需在套接字服务器中打开一个
管道
,而不是生成一个shell命令

假设您有两个进程,通话器和服务器

talker.py server.py 使用
python server.py
运行此命令将产生

[mpenning@Bucksnort tmp]$ python server.py
SERVER HEARD Talking every 3 seconds, blabbed 1 times
SERVER HEARD Talking every 3 seconds, blabbed 2 times
SERVER HEARD Talking every 3 seconds, blabbed 3 times
SERVER HEARD Talking every 3 seconds, blabbed 4 times
^CTraceback (most recent call last):
  File "talker.py", line 11, in <module>
    time.sleep(DELAY)
KeyboardInterrupt
Killing child...
[mpenning@Bucksnort tmp]$
[mpenning@Bucksnorttmp]$python server.py
服务器每3秒钟听到一次谈话,说了1次
服务器每3秒钟听到一次谈话,说了2次
服务器每3秒钟听到一次谈话,说了3次
服务器每3秒钟听到一次谈话,说了4次
^CTraceback(最近一次通话最后一次):
文件“talker.py”,第11行,在
时间。睡眠(延迟)
键盘中断
杀死孩子。。。
[mpenning@Bucksnort[tmp]$

另一个程序是在发送随机数的机器上打印值,还是在侦听已发送数字的机器上?现在server.py正在发送随机数,只是为了测试。但是我需要server.py继续获取每2秒发送的标准值。我刚刚编写了另一个程序,例如生成值并通过stdout将其发送到服务器。您可以使用
sys.stdin.read()
从stdin读取,或者像其他任何文件句柄一样。readlines()etcI有问题。我按照你的建议做了。我将显示上面的代码,我得到了错误,我想是因为当我试图通过管道传递值时,我的服务器已经在运行,它给出了错误,我没有指定args或类似的东西。所以问题是:每次我通过管道传递值时,它都会将文件执行到它传递值或不传递值的位置?@Viktor,在不知道错误的情况下,描述不足以提供帮助,就像您使用
子进程调用数字生成程序的方式一样,以及您将该程序的
stdout
附加到socket服务器中的
stdin
的方式。@Mike可能我在格式上弄错了一些东西,因为它还发送stderr和stdout,但我看到它对我的参数[0]不满意,我在运行服务器时必须指定这些参数,为什么我认为它运行server.py,而不仅仅是通过stdin。parse_args poetry_File=args[0]indexer中第36行的文件“myslowpoetry.py”:列表索引超出范围(无,无)@Mike yes。我刚刚检查过,错误完全是因为它没有传递args[0],这意味着每次我通过管道执行send_random_number.py时,它都会执行管道链接到的另一个文件,这对于我的服务器来说是完全错误的,因为它需要运行args,而只是通过管道传递值。妈的…=)@Viktor,你误解了我指的那些文件。。。我发布了说明
from subprocess import Popen, PIPE
from os import kill
import signal

talkpipe = Popen(['python', 'talker.py', '3'],
    shell=False, stdout=PIPE)
try:
    while True:
        line = talkpipe.stdout.readline()
        print "SERVER HEARD", line.strip()
except KeyboardInterrupt:
    print "Killing child..."
    kill(talkpipe.pid, signal.SIGTERM)
[mpenning@Bucksnort tmp]$ python server.py
SERVER HEARD Talking every 3 seconds, blabbed 1 times
SERVER HEARD Talking every 3 seconds, blabbed 2 times
SERVER HEARD Talking every 3 seconds, blabbed 3 times
SERVER HEARD Talking every 3 seconds, blabbed 4 times
^CTraceback (most recent call last):
  File "talker.py", line 11, in <module>
    time.sleep(DELAY)
KeyboardInterrupt
Killing child...
[mpenning@Bucksnort tmp]$