1. 程式人生 > >socket間通訊_TCP(用客戶端給執行服務端命令)

socket間通訊_TCP(用客戶端給執行服務端命令)

服務端:

import os
import socket

HOST = '172.25.254.41'
PORT = 9881

# 1. 建立服務端的socket物件
with socket.socket() as serverSocket:
    # 2. 繫結一個ip和埠, 客戶端連線時的socket;
    serverSocket.bind((HOST, PORT))
    # 3. 一直監聽是否有客戶端連線
    serverSocket.listen()
    print("server is listening %d......." %(PORT))
    # 4. 如果有客戶端連線, 接收客戶端的連線;
# serverSocket.accept會返回2個值, address指的是, 客戶端的ip和埠; clientSocket, address = serverSocket.accept() with clientSocket: while True: # 5. 客戶端和服務端進行通訊; cmd = clientSocket.recv(1024).decode('utf-8') ##每次最多接受1024k # 執行客戶端傳送的命令; """ 執行linux命令: 1. 如果想獲取命令是否執行成功? os.systemc('cmd') 返回為0: 代表成功 返回為非0, 代表失敗; 2. 如果想獲取命令的執行結果,可以儲存到變數中 os.popen(cmd) """
if os.system(cmd) == 0: resData = os.popen(cmd).read() if resData: resData = resData.encode('utf-8') # 6. 給客戶端回覆訊息 clientSocket.send(resData) else: print("no response."
) else: print("命令執行失敗!")

客戶端:

import socket

HOST = '172.25.254.41'
PORT = 9881
# 1.
with socket.socket() as clientSocket:
    # 2. 連線遠端主機
    clientSocket.connect((HOST, PORT))

    # 3. 客戶端, 服務端通訊
    # 給server主機發送訊息
    while True:
        cmd = input('client>>').encode('utf-8')
        clientSocket.send(cmd)
        # 接收服務端的響應(即服務端回覆的訊息)
        recvData = clientSocket.recv(1024).decode('utf-8')
        print("命令執行結果:", recvData)

服務端:
server is listening 9881…….
TCP_client.py
TCP_server.py
UDP_client.py
UPD_server.py

客戶端:
client>>ls
命令執行結果: TCP_client.py
TCP_server.py
UDP_client.py
UPD_server.py