服务端

#!/usr/bin/env python

#coding:utf-8

import socket
import select
import Queue
import json
import traceback
from datetime import datetime
from  mysql_db import mysql_db

class ComplexEncoder(json.JSONEncoder):
    def default(self, obj):
        if isinstance(obj, datetime):
            return obj.strftime('%Y-%m-%d %H:%M:%S')
        elif isinstance(obj, date):
            return obj.strftime('%Y-%m-%d')
        else:
            return json.JSONEncoder.default(self, obj)






class server_socket(object):

    def __init__(self,server_host='192.168.137.1',server_port=8888,server_listen=10):
        self.server_host=server_host
        self.server_port=server_port
        self.server_listen=server_listen
    def server_get(self):
        try:
            so=socket.socket(socket.AF_INET,socket.SOCK_STREAM)
            so.setsockopt(socket.SOL_SOCKET,socket.SO_REUSEADDR,1)
            so.setblocking(0)
            so.bind((self.server_host,self.server_port))
            so.listen(self.server_listen)
            inputs=[so]
            outputs = []
            message_queue={}
            while True:
                rs,ws,es=select.select(inputs,outputs,[],1)
                print 'socket connent num %s' %len(rs)
                for f in rs:
                    #print type(f)
                    #print type(so)
                    if f is so:
                        c,a=f.accept()
                        inputs.append(c)
                        message_queue[c]=Queue.Queue()
                        #print message_queue
                        config_host=mysql_db()
                        config_data=config_host.mysql_db()
                        #data=[0,config_data]
                        #print config_data
                        #for new_data in range(len(config_data)):
                         #   print config_data[0][new_data]
                        
                        data={'status':0,'host_data':config_data}
                        
                        json_data=json.dumps(data, cls = ComplexEncoder)
                        #print json_data
                        
                        
                        c.sendall(json_data)
                        #print '1000'
                    else:
                        data=f.recv(4096)
                        data_1=len(str(data))
                        if data_1>0:
                            message_queue[f].put(data)
                            if f not in outputs:
                                outputs.append(f)
                            #f.sendall('0')
                            #print data
                            with open(r'G:\testmxq.log','a+') as f:
                                f.write(data)
                           #so.close()
                        else:
                            #if f in outputs :
                                #outputs.remove(f)
                            #c.sendall('1')
                            inputs.remove(f)
                            #f.close()                            
    
                for f in ws:
                    while not message_queue[f].empty():
                        msg = message_queue[f].get_nowait()
                        #print "send to data" , msg , "to", f.getpeername()
                        json_data=json.loads(msg)
                        
                        #json_data
                        
                        host_ip=json_data['host_ip']
                        host_cpu=json_data['cpu']
                        print host_cpu
                        host_memory=json_data['memory']
                        
                        
                        sql='insert into  web_monitor_data (host,cpu,disk,memory) values("{ip}","{cpu}","","{memory}")'.format(ip=host_ip,cpu=host_cpu,memory=host_memory)
                        print sql
                        db=mysql_db()
                        db.insert_db(sql)

                    outputs.remove(f)
                    del message_queue[f]
                        #s.send(msg)
                    
        except Exception as e:
            print e
            traceback.print_exc()
if __name__=='__main__':
    new_socket=server_socket()
    new_socket.server_get()
请使用浏览器的分享功能分享到微信等