socket2

import socket
client = socket.socket()

#client.connect(('192.168.16.200',9999))
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)
    client.sent('准备好接收了'.encode("utf-8"))#为解决粘包问题,而加入

received_size = 0
received_data = b''
while received_size < int(cmd_res_size.decode()) :
data = client.recv(1024)
received_size += len(data) #每次收到的有可能小于1024,所以必须用len判断
#print(data.decode())
received_data += data
else:
print("cmd res receive done...",received_size)
print(received_data.decode())


client.close()


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:
print("等待新指令")
data = conn.recv(1024)
if not data:
print("客户端已断开")
break
print("执行指令:",data)
cmd_res = os.popen(data.decode()).read() #接受字符串,执行结果也是字符串
print("before send",len(cmd_res))
if len(cmd_res) ==0:
cmd_res = "cmd has no output..."

conn.send( str(len(cmd_res.encode())).encode("utf-8") ) #先发大小给客户端

#time.sleep(0.5)
        client_ack = conn.recv(1024)#等待客户端返馋馈,解决粘包问题

conn.send(cmd_res.encode("utf-8"))
print("send done")
#os.path.isfile()
#os.stat("sock")
server.close()

import hashlib
m = hashlib.md5()


posted @ 2018-11-17 03:07  rongye  阅读(346)  评论(0编辑  收藏  举报