让我先说一下,我并不完全熟悉Python,但在使用其他语言编程方面有丰富的经验。
我正在开发一种工具,允许我将数据包注入TCP网络流。我的想法是我的代码充当两个网络端点之间的透明代理。我有代码工作,代理工作,我甚至可以解析数据包和自动注入(即检测特定状态和修改/注入数据包),但我的最终目标是涉及用户交互。
我正在尝试解决的问题是如何在后台运行网络内容,同时命令行界面会提示用户输入命令。当给出命令时,它可能会执行某种注入。
在C#中,我将使用后台工作程序任务或线程处理此问题,然后使用CLI触发事件,但我不熟悉这种设计通常如何在Python中实现。我该怎么做呢?
答案 0 :(得分:2)
如果您熟悉具有后台进程和触发事件的模式,则可以在python中采用相同的方法。查看Multiprocessing module以创建后台进程(从而避免Global Intepreter Lock问题)并使用Pipe将消息发送到后台进程以触发事件
或者你可以看一下像Trellis这样的包来采取事件驱动的方法,或者也许是Twisted框架。我不能代表其中任何一个,因为我从未使用它们。
希望这有帮助!
答案 1 :(得分:1)
线程是要走的路(背景工作者不是同样的事情吗?)。像这样:
from Queue import Queue
import threading
queue = Queue()
def job():
while True:
command = queue.get() # <-- waits until something is in the queue
# do something with the command
# main thread
t = threading.Thread(target=job)
t.daemon = True
t.start()
while True:
command = raw_input("---> ")
queue.put(command)