Python请求对象通过套接字返回

Python请求对象通过套接字返回,python,sockets,object,return,send,Python,Sockets,Object,Return,Send,我的设置如下: Python 2.6(嵌入商业应用程序)使用子流程在(外部)Python 2.7中启动外部脚本。 然后,外部脚本使用套接字模块将python命令发送回嵌入式python。 使用以下代码初始化套接字: self.sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM) 我使用以下命令发送命令: self.sock.send("print ('hello, world!')") 目前这项工作做得很好。我能够发送我想要的所

我的设置如下:

Python 2.6(嵌入商业应用程序)使用子流程在(外部)Python 2.7中启动外部脚本。
然后,外部脚本使用套接字模块将python命令发送回嵌入式python。
使用以下代码初始化套接字:

self.sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)  
我使用以下命令发送命令:

self.sock.send("print ('hello, world!')")
目前这项工作做得很好。我能够发送我想要的所有命令,并且很好地控制程序

我的问题:我如何请求通过套接字发回信息?
例如,我需要让程序给我一个字符串列表。但是,我很难理解嵌入式python如何通过我的开放式套接字发送任何数据?

谢谢

您始终可以使用双向套接字通信

当外部python发送某些内容时,始终发送一个元组,其中一个参数可以指定您正在请求某些内容

我举个例子,

设置双向套接字通信(简单的客户端-服务器模型-同步或异步取决于您的项目/应用程序需要什么。)

2.7发送这样的元组-

(<command>, 1)
(,1)
1表示您希望发送的命令(您说该命令正在工作)的输出将被发送回2.7

因此,当2.6接收到元组时,元组的第0个位置始终表示它试图发送的命令,第1个位置表示返回参数

使用一个简单的if-else条件,您可以检查它是否为1,然后将结果发送回2.7-否则不是


相当简单的逻辑。

我猜您希望通过套接字返回命令的输出,例如
print(“Hello world”)
。@JoachimPileborg,我应该使用不同的命令,如:
str(45)
。感谢您的回复。这听起来是一个很好的解决方案。在通过套接字发送对象之前,我是否需要手动pickle对象?是的,我相信是这样。要在python中通过套接字发送对象,您需要在发送时序列化对象,在接收时反序列化对象,这可以通过pickle完成。