1.a.accept() 和a.recv()都是阻塞的,基于链接正常
3.s.listen(n)代表能挂起的链接数,如果n等于1代表可以链接一个,挂起一个,就是后面可以排队等一个,第三个拒绝
4.#__author__ = 'DouYunQian'
#coding=utf-8
import socket
client=socket.socket()
ip_addr=("127.0.0.1",9958)
client.connect(ip_addr)
while True:
data=input("cmd >>>")
if len(data)==0:continue
if data=="exit":break
client.sendall(bytes(data,encoding="utf-8"))
rec_data=client.recv(1024)
print(str(rec_data,"utf-8"))
client.close()
以上是服务端代码
客户端代码如下:
#__author__ = 'DouYunQian'
#coding=utf-8
#
# python模拟ssh交互
#
import socket,subprocess
from sys import stdout
server_po=socket.socket()
ip_addr=("127.0.0.1",9958)
server_po.bind(ip_addr)
server_po.listen(5)
while True:
con,addr=server_po.accept()
while True:
try:
rece_data=con.recv(1024)
if len(rece_data)==0:break
p=subprocess.Popen(str(rece_data,"utf-8"),shell=True,stdout=subprocess.PIPE)
win_data=p.stdout.read()
if len(win_data)==0:
send_data="cmd error"
else:
send_data=str(win_data,encoding="gbk")
con.sendall(bytes(send_data,encoding="utf-8"))
except Exception:
break
con.close()
server_po.close()