本文主要是介绍解决粘包的简单ssh程序,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
服务端
import socket
import subprocess
import structsock=socket.socket(socket.AF_INET,socket.SOCK_STREAM)
ip_port=("127.0.0.1",9778)
sock.bind(ip_port)#阻塞等待的队列的最大连接数
sock.listen(2)while 1:client,addr=sock.accept()print("客户端%s建立链接"%str(addr))while 1:try:cmd=client.recv(1024)except Exception:print("程序出问题了")if cmd==b'':break#获取命令返回值res=subprocess.getoutput(cmd.decode("utf8"))#解决粘包问题res_bytes=bytes(str(len(res)),encoding="utf8")res_bytes_len=struct.pack("i",len(res_bytes))client.sendall(res_bytes_len)client.sendall(res_bytes)
客户端
import socket
import json
import structip_port=("127.0.0.1",9778)
s1=socket.socket(socket.AF_INET,socket.SOCK_STREAM)
s1.connect(ip_port)
while 1:data=input("请输入>>>")s1.send(data.encode("utf8"))#解决粘包问题res_rec=s1.recv(4)res_rec_length=struct.unpack("i",res_rec)[0]res_set=""res_i=0while res_i < res_rec_length:res_rec_inn=s1.recv(1024)res_rec1_size=int(len(res_rec_inn.decode("utf8")))res_set+=res_rec_inn.decode("utf8")res_i+=res_rec1_sizeprint(res_set)
这篇关于解决粘包的简单ssh程序的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!