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/