import socket
def functions():
print ("hello")
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
server_address = ('192.168.137.1', 20000)
sock.bind(server_address)
sock.listen(1)
conn, addr = sock.accept()
print ('Connected by', addr)
sock.listen(1)
conn.sendall(b"Welcome to the server")
我的问题是如何向客户端发送功能, 我知道conn.sendall(b“欢迎使用服务器”)将数据发送给客户端。 哪个可以解码。
我想知道如何向客户端发送功能 conn.sendall(function()) - 这不起作用
此外,我想知道允许客户端接收我发送的功能的功能
我已经在python website上查找了可以执行此操作的功能,但我还没找到。
答案 0 :(得分:1)
除非在客户端明确编码,否则您要求的功能基本上是不可能的。如果这是可能的,那么可以编写一种可以轻松传播到任何远程计算机的病毒。相反,客户有权以任何方式解码传入数据。
考虑到案例客户真的想要接收要执行的代码,问题是代码应该以同时表示的形式表示
后者是极其复杂的话题;您可以阅读任何WWW浏览器安全历史记录 - 大多数已关闭的漏洞都是此类沙箱中的问题。
(存在允许和期望执行此类执行的环境;例如,基于Erlang cookie的对等集群。但是,在此类集群中,B侧也允许在A侧执行任何操作。)
您应该首先搜索符合您的功能和安全需求的执行环境(高级虚拟机)。对于Python,您需要查看multiprocessing
模块:它的工作池实现不会传递代码本身,但会简化为执行请求传递数据的过程。此外,marshal
和pickle
模块涵盖了没有函数的任意Python数据传递。