日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程语言 > python >内容正文

python

PYTHON——TCPUDP:Socket实现远程执行命令

發(fā)布時(shí)間:2025/3/20 python 20 豆豆
生活随笔 收集整理的這篇文章主要介紹了 PYTHON——TCPUDP:Socket实现远程执行命令 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

  本文介紹客戶端client輸入dos指令,并將dos指令發(fā)送給服務(wù)端server,服務(wù)端接收到指令,通過(guò)調(diào)用subprocess模塊的Popen方法實(shí)例化一個(gè)子進(jìn)程對(duì)象,子進(jìn)程對(duì)象執(zhí)行完指令后,將結(jié)果并通過(guò)管道方式回送到主進(jìn)程。其中,subprocess的用法,參見(jiàn):Python subprocess模塊解析。

一、通過(guò)發(fā)送字符串長(zhǎng)度的方法:

1、服務(wù)端程序:cmd_server.py:

import socket import subprocess
import time
# subprocess.Popen() 重要方法.# 學(xué)socket的秘籍:一收一發(fā) sk = socket.socket() host='' #空表示本機(jī),等效于127.0.0.1和localhost port=8000 address = (host,port) sk.bind(address) sk.listen(3) print('waiting......') # conn,addr = sk.accept() #這個(gè)conn是客戶端的socket對(duì)象。非常重要。while True:conn, addr = sk.accept() # 這個(gè)conn是客戶端的socket對(duì)象。非常重要。print(addr)while True:try:data = conn.recv(1024)except Exception:breakif not data: #客戶端退出時(shí),最后還是會(huì)給服務(wù)端發(fā)送一個(gè)空串。即data為空。breakprint('--------->',str(data,'utf8'))obj=subprocess.Popen(str(data,'utf8'),shell=True,stdout=subprocess.PIPE)cmd_result = obj.stdout.read() #bytes類型result_len = bytes(str(len(cmd_result)),'utf8')conn.sendall(result_len) #必須先傳一個(gè)長(zhǎng)度過(guò)去
# time.sleep(1) #兩個(gè)發(fā)送指令send或sendall連在一起,會(huì)出現(xiàn)粘包現(xiàn)象。解決粘包現(xiàn)象,就是加入sleep
     conn.recv(1024) #通過(guò)一收一發(fā)方式,多引入一個(gè)短收,解決粘包問(wèn)題。
conn.sendall(cmd_result) conn.close()

2、客戶端程序:cmd_client.py:

import socketsk=socket.socket() address = ('127.0.0.1',8000) sk.connect(address)while True:inp = input('>>>')if inp=='exit':breaksk.send(bytes(inp,'utf8'))result_len = int(str(sk.recv(1024),'utf8'))
sk.send(bytes('ok')) #用于解決粘包現(xiàn)象
print(result_len)data=bytes() #初始化一個(gè)bytes類型的變量,就像初始化sum=0一樣while len(data)!=result_len:temp = sk.recv(1024)data += tempprint(str(data,'gbk'))sk.close()

二、更好的方法:

1、服務(wù)端程序:cmd_server.py:

import socket import subprocess# subprocess.Popen() 重要方法. # 學(xué)socket的秘籍:一收一發(fā) sk = socket.socket() host='' #空表示本機(jī),等效于127.0.0.1和localhost port=8000 address = (host,port) sk.bind(address) sk.listen(3) print('waiting......') # conn,addr = sk.accept() #這個(gè)conn是客戶端的socket對(duì)象。非常重要。while True:conn, addr = sk.accept() # 這個(gè)conn是客戶端的socket對(duì)象。非常重要。print(addr)while True:try:data = conn.recv(1024)except Exception:breakif not data: #客戶端退出時(shí),最后還是會(huì)給服務(wù)端發(fā)送一個(gè)空串。即data為空。breakprint('--------->',str(data,'utf8'))obj=subprocess.Popen(str(data,'utf8'),shell=True,stdout=subprocess.PIPE)cmd_result = obj.stdout.read() #bytes類型
# result_len = bytes(str(len(cmd_result)),'utf8')
# conn.sendall(result_len) #必須先傳一個(gè)長(zhǎng)度過(guò)去
# conn.recv(1024) #兩個(gè)發(fā)送指令send或sendall連在一起,可能會(huì)出現(xiàn)粘包現(xiàn)象。解決粘包現(xiàn)象,就是加入臨時(shí)阻塞
conn.sendall(cmd_result) conn.close()

?

2、客戶端程序:cmd_client.py

import socketsk=socket.socket() address = ('127.0.0.1',8000) sk.connect(address) buffersize=1024 while True:inp = input('>>>')if inp=='exit':breaksk.send(bytes(inp,'utf8'))fullDataBtyes = b'' #初始化一個(gè)bytes類型的變量,等效于fullDataBytes=bytes()。while True:data = sk.recv(buffersize)fullDataBtyes += dataif len(data)<buffersize:break;print(str(fullDataBtyes,'gbk'))# result_len = int(str(sk.recv(1024),'utf8'))# sk.send(bytes('ok')) #解決粘包# print(result_len)# data=bytes() #初始化一個(gè)bytes類型的變量,就像初始化sum=0一樣# while len(data)!=result_len:# temp = sk.recv(1024)# data += temp# print(str(data,'gbk')) sk.close()

?

參考:

1、‘’老男孩‘’python全棧開(kāi)發(fā),袁老師講解

2、參考《python從菜鳥(niǎo)到高手》,作者:李寧

轉(zhuǎn)載于:https://www.cnblogs.com/chenhaiming/p/9886288.html

總結(jié)

以上是生活随笔為你收集整理的PYTHON——TCPUDP:Socket实现远程执行命令的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 日本久久成人 | 深夜福利视频在线观看 | 色网址在线 | 探花视频在线版播放免费观看 | av网站在线免费看 | 国产精品天天狠天天看 | 91成人精品视频 | 国产精品久久久久久影视 | av片免费播放 | 免费欧美黄色片 | www.国产色| 骚五月| 久久精品国产av一区二区三区 | 成年人免费看毛片 | av老司机在线播放 | 青青操网 | 色呦呦影院 | 西西毛片| 自拍偷拍福利 | 日韩二区在线观看 | 天天操天天插 | 成人欧美激情 | 四虎久久久久 | 国产午夜在线视频 | 800av在线视频 | 美女张开腿让人桶 | 97爱爱| 欧美a∨亚洲欧美亚洲 | 视频网站在线观看18 | 黄色不打码视频 | 99久久久国产精品无码性 | 草久网 | 欧美性生交xxxxx久久久 | 丁五月 | 亚洲网站在线 | 人人看超碰 | 人人干干人人 | 中文字幕在线视频一区二区 | 肉性天堂 | yy色综合 | 老头巨大又粗又长xxxxx | 国产无遮挡又黄又爽免费视频 | 国产精品99无码一区二区 | 色婷婷av一区二区三区大白胸 | 日本中文字幕在线观看视频 | 熟睡侵犯の奶水授乳在线 | 国产做受视频 | 三级在线免费 | 天天操夜夜操夜夜操 | 久久国产经典 | 亚洲熟悉妇女xxx妇女av | 黄色免费91| 男人天堂成人网 | 国产女主播自拍 | 18禁网站免费无遮挡无码中文 | 91爱视频| 久久免费视频网站 | 丰满的女邻居 | 草草影院地址 | 日本一区二区三区免费观看 | 天堂国产| 亚洲伦理在线 | 天天草综合 | 久久伊人一区二区 | 欧美最顶级a∨艳星 | 网站色| 日韩大片免费观看视频播放 | 欧美激情va永久在线播放 | 天天想你在线观看完整版电影高清 | 91蜜桃传媒精品久久久一区二区 | 女生的胸无遮挡 | 国产精品亚洲专区无码牛牛 | 日韩v欧美 | 三级久久久 | 成人刺激视频 | 欧美激情一区二区三级高清视频 | 欧美中文视频 | 少妇人妻偷人精品一区二区 | 涩涩资源网 | 免费日韩在线 | 国产99久久九九精品无码 | 欧美成性色| 成人免费看| 亚洲高潮无码久久 | 国产精品入口夜色视频大尺度 | 中国亚洲老头同性gay男男… | 无码少妇一级AV片在线观看 | 免费观看黄网站 | 久久性感美女视频 | 日韩精品三级 | 色婷婷国产 | 日韩女优在线视频 | 天天狠狠干 | 9色视频| 性欧美巨大 | 免费裸体美女网站 | 一区二区三区视频在线播放 | 日本爽爽爽爽爽爽在线观看免 | 国产乱乱|