功能:实现从客户端向服务端发送cmd指令,服务端将结果返回给客户端的功能。
#coding:utf-8 '''服务端''' import socket,os server=socket.socket() #创建对象 server.bind(('localhost',2345)) #绑定监听端口(服务器端的IP地址和端口) server.listen(5) #开始监听TCP传入连接,5指定在拒绝连接之前,操作系统可以挂起的最大连接数量(tcp连接队列的大小,即连接数) while True: print'传输数据过来吧。。。' conn,addr=server.accept() #与客户端建立连接 while True: print '开始接受数据' data=conn.recv(1024) #一次允许接受的数据大小 print '数据是:%s'%data if len(data)==0: print '没有传数据' break data_po=os.popen(data).read() #将命令结果读到data_po中 print '输出内容长度:',len(data_po) print data_po print type(data_po) if len(data_po)==0: data_po= '输入的命令有误! ' conn.send(str(len(data_po))) #发送总数据的大小给客户端,send里面必须是str类型。 conn.send(data_po) print isinstance(data_po, unicode) #发送数据给客户端,客户端收到多少数据,取决于它设定可以接受数据的大小。 server.close() #关闭服务端
#coding:utf-8 '''客户端''' import socket client=socket.socket() client.connect(('localhost',2345)) #连接端的IP地址和端口号(这里写的是服务端的IP地址和端口号) a=0 #统计接受数据的总大小 while True: data_cl=raw_input('>>:').strip() #输入 if len(data_cl)==0: #不能输入回车、空格字符 print '输入错误,请重新输入' continue client.send(data_cl) #发送输入的指令 data_lp=client.recv(1024) #接受服务端数据的大小 while a<=data_lp: #如果接受数 据比总量小,将继续接受,直到接受数的大小大于总量大小 data=client.recv(1024) #一次允许接受的数据大小,通过while循环可以多少实现接受信息量比较大的数据。 a=a+len(data) print '输出数据长度:',a print data data_cl=raw_input('>>:').strip() #输入 client.close() #关闭客户端