def client_sender(buffer):
client = socket.socket(socket.AF_INET,socket.SOCK_STREAM)##定义socket类型,网络通信,TCP
#Python 提供了两个基本的 socket 模块。
#第一个是 Socket,它提供了标准的 BSD Sockets API。
#第二个是 SocketServer, 它提供了服务器中心类,可以简化网络服务器的开发。
#socket.AF_INET 服务器之间网络通信
#socket.SOCK_STREAM 流式socket , for TCP
try:
# 连接到目标主机
client.connect((target,port))#连接到远程 主机 跟端口
if len(buffer): # 1 号 代码段 如果 有要发送的数据
client.send(buffer) # 进行发送
while True:# 死循环啊 你在等待什么呢
# 现在等数据回传
recv_len = 1 # 做了一个 登录 了 监听
response = ""# 返回的数据 仓库
while recv_len: # 2号 代码段 当 这里,其实这里一直存在,内部的 死循环
# 拿回原来的 数据
data = client.recv(4096)# 一直在等待返回的数据
recv_len = len(data)# 等待 返回的数据
response+=data# 累加 数据
if recv_len < 4096:# 如果返回的数据少于4096
break
print response,#打印返回的结果
# 等待更多输入
buffer = raw_input("") # 3 号 代码段 重新的等待 输入信息
buffer += "\n" # 添加换行
#发出去
client.send(buffer)# 然后在发送出去
except:# 这里 根本就是个死循环啊,没有异常
print "[*] Exception! Exiting."
#关闭连接
client.close()
"""
_____________________________________________________________________________________________________________
现在你应该熟悉这些代码了,我们从建立一个TCP套接字对象开始,首先检测是否已经从标准输入中接收到了数据1。如果一切
正常,我们就将数据发送给远程主机并接收回传数据2,直到没有更多的数据发送回来,然后我们等待用户下一步的输入3并继
续发送和接收数据,直到用户结束脚本运行。
下面附件的那行用来对用户的输入进行特殊处理,这样我们的客户端就能与命令行shell兼容。现在,我们继续创建服务器段
的主循环和子函数,用来对命令行shell的创建和命令执行进行处理。
_____________________________________________________________________________________________________________
"""
本文转载自麦子学院:http://q.maiziedu.com/article/23229/
转载于:https://blog.51cto.com/10559342/1766310