Cobra——client与server通信

Cobra的基本框架有了一个雏形,Cobra的client和server之间的通信能够实现,同时,也能够使Python虚拟机在client的控制下运行。
由于client需要向server传递两类独立的信息:1、待执行的py源文件;2、控制虚拟机执行的指令。所以cobra server在两个端口分别监听这两类信息,它们分别对应的端口是6061和6060。
当cobra server启动时,会在6061端口等待client的连接,并从client接收待执行的文件名。

这时当然需要启动cobra client,现在的client相当简陋,几乎拿不出手,如下图所示:

其中“选择源文件”允许用户选择想要利用cobra server执行的.py源文件,而下一步则类似于各种debugger中的“下一步”操作,“关闭”按钮会断开cobra server和client之间的连接。
Ok,第一步需要选择待执行的源文件:

我们使用了下面这个简单的文件:

 

print 'hello'

通过IDLE我们可以看到这个文件编译后的字节码指令序列:

当client选择了hello.py后,会将hello.py文件的绝对路径传递给server,激活server的后续动作:

server接收到client从44311端口传递来的待执行的.py文件名后,开始Python虚拟机的流程,并进入待命状态,在6060端口监听client的命令。而client会接收到server此时处于的状态:

可以清晰地看到,server目前正在执行hello.py,待执行的字节码指令为“100 0”,翻译成用户友好的形式就是“LOAD_CONST 0”。

现在我们在client上发出“下一条”命令,server接收到命令后,会执行下一条字节码指令,也就是“LOAD_CONST 0”。

server在随后执行第二条指令之前,server又会将目前状态传递给client,并在6060端口等待client的指令,如此循环往复,直到整个字节码指令序列都被执行完。完成执行后,点击“关闭”,client与server之间的连接就断开了。下图中两行显示了server在6060和6061两个端口都停止了监听。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值