如何通过套接字API列出当前目录文件?

时间:2015-09-27 19:00:01

标签: python sockets

所以现在我有一个简单的FTP系统来传输文件。

但我对如何从客户端计算机上运行服务器计算机上的命令感到困惑。

如何从客户端计算机上打开服务器计算机上的终端以使用ls或mkdir或cd等命令?或者我可以直接从套接字编程

执行此操作

1 个答案:

答案 0 :(得分:0)

您可以使用python模块argc。 (https://pymotw.com/2/subprocess/

例如,假设您使用套接字设置了客户端/服务器“对话框”,您可以执行以下操作:

<强> client.py

subprocess

您可以将上面的代码放在一个循环中,该循环只有在您输入“退出”或其他内容时才会中断,以便不断发送和接收命令。您在服务器端也需要一个循环或类似的东西,以便不断接受并返回命令的输出。你也可以使用线程。

<强> server.py

# assume 's' is your socket already connected to the server

# prompt the user for a command to send
cmd = raw_input("user > ")
s.send(cmd) # send your command to the server
# let's say you input 'ls -la'

注意:我认为较新的版本是# on the server side do this # s is again your socket bound to a port # but we're on the server side this time! from subprocess import Popen, PIPE cmd = s.recv(1024) # cmd now has 'ls -la' assigned to it # parse it a bit cmd = cmd.split() # to get ['ls', '-la'] # now we execute the command on the server with subprocess p = Popen(cmd, stdout=PIPE) result = p.communicate() # result is, in this case, the listing of files in the current directory s.send(result[0]) # result[0] should be a str # you now make sure to receive your result on the client ,但所有方法都是我记得的。