功能需求:
- 分『服務程式』(Service)與『請求程式』(Client)。
- 『請求程式』傳送命令列字串給『服務程式』。
- 『服務程式』收到命令列字串後,執行指定程式,再傳送執行結果回『請求程式』。
- 『請求程式』傳送『quit』命令列字串給『服務程式』,『服務程式』會自動結束服務。
程式碼:
- 服務程式:
- import socket import shlex, subprocess myHost = '' myTCP_Port = 8901 myBackLog = 5 myBufferSize = 1024 mySocket = socket.socket(socket.AF_INET, socket.SOCK_STREAM) mySocket.bind((myHost, myTCP_Port)) mySocket.listen(myBackLog) myCount = 0 while 1: myClient, address = mySocket.accept() myData = myClient.recv(myBufferSize) if myData: if myData.lower() == 'quit': break myCount = myCount + 1 myMessage = "{0}>: {1}".format(myCount, myData) print(myMessage) myClient.send(subprocess.check_output(myData.split())) myClient.close() mySocket.close()
- 請求程式:
- import sys import socket from time import gmtime, strftime myHost = 'localhost' myTCP_Port = 8901 myBufferSize = 1024 mySocket = socket.socket(socket.AF_INET, socket.SOCK_STREAM) mySocket.connect((myHost, myTCP_Port)) if len(sys.argv) > 1: myMessage = sys.argv[1] else: myMessage = "ls" mySocket.send(myMessage) myData = '0' while myData: myData = mySocket.recv(myBufferSize) if myData: print myData mySocket.close()
運行: