python socket實現簡單的ssh客戶端

2022-08-30 03:03:07 字數 1664 閱讀 6357

客戶端**,監聽埠號為 localhost 9999

#!/usr/local/bin/python3

# -*- coding:utf-8 -*-

import socket

client = socket.socket()

client.connect(('localhost', 9999))

while true:

cmd = input(">>:").strip()

if len(cmd) == 0:

continue

client.send(cmd.encode("utf-8"))

cmd_res_size = client.recv(1024) # 接收命令結果的長度

print("命令結果大小:", cmd_res_size.decode())

# 防止粘包-裝逼方法

client.send("接收成功".encode("utf-8"))

# print(cmd_res)

received_size = 0

while received_size < int(cmd_res_size.decode()):

data = client.recv(1024)

received_size += len(data)

print(data.decode())

print("-----%s-----" % len(data))

else:

print("received done...", cmd_res_size.decode())

client.close()

伺服器端**

#!/usr/local/bin/python3

# -*- coding:utf-8 -*-

import socket, os, time

server = socket.socket()

server.bind(('localhost', 9999))

server.listen()

while true:

conn, addr = server.accept()

print("new conn:", addr)

while true:

data = conn.recv(1024)

if not data:

print("客戶端斷開連線")

break

print("執行指令:", data)

cmd_res = os.popen(data.decode()).read()

conn.send(str(len(cmd_res)).encode("utf-8")) # 先發大小給客戶端

# 防止粘包-low的方法

# time.sleep(0.5) # 強制緩衝區超時,防止粘包

# 防止粘包-裝逼方法 # 在兩次send中間強制進行一次收發,這樣就能有效防止粘包

ack = conn.recv(1024)

print(">>>>>:", ack.decode())

tmp = conn.send(cmd_res.encode("utf-8"))

print(">>>>>: 傳送成功")

server.close()

python socket 多執行緒實現

近期需要用到socket協議進行hilenskit與ubuntu系統進行資訊傳輸,同時需要用到多執行緒保證主線程不受到影響。主要內容包括socket語法 python多執行緒 socket.socket family type proto 通過該函式建立乙個socket類 family包括af un...

python socket 簡單實現聊天功能

今天看了下python的socket,想實現下兩台電腦的聊天功能 覺得這樣好像自己寫出個簡易版qq沒問題了 於是動手開始實現。首先是伺服器端 from socket import from time import ctime host port 80 埠號,伺服器與客戶端要一致 bufsiz 102...

Python socket模組實現網路程式設計

osi七層結構 應用表示 會話傳輸 傳輸層一tcp udp 網路 ip位址 資料鏈路 mac位址 物理層傳輸方式 tcp ip 安全的傳輸 udp 不安全傳輸 socket流程圖 socket是在應用層和傳輸層之間的乙個抽象層,它把tcp ip層複雜的操作抽象為幾個簡單的介面 用層呼叫已實現程序在網...