|
|
目标:实现发送端和接收端互相变身
分为 接收端
发送端
设定可以互相变身的两台机器的 IP.
发送端特征: 0、接到变身指令
1、检测本地MSSQL库
1)、如果可以访问就广播(本机IP)包给接收端
2)、如果不能访问就广播(另外一台机器的IP),然后变成接收端
接收端特征:0、接到变身指令
1、接受数据
1)、对比IP是否是自身IP,如果是,变身为发送端
#coding:gb2312#主备切换器import socketimport osimport pymssqlimport ctypesimport timeimport sys#--------------------------------------------------------------------------## 定义发送广播包函数#--------------------------------------------------------------------------#def sendserver(): in_data=raw_input('2为发送端') if in_data=='2': s=socket.socket(socket.AF_INET,socket.SOCK_DGRAM) s.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1) s.setsockopt(socket.SOL_SOCKET,socket.SO_BROADCAST,1) if loaclhost_ip=='127.0.0.1': windows_msg('''1、 'setting.ini'中的'GLOBAL'的字段不能设置为127.0.0.12、网络未连接"3、本地IP不能设置为127.0.0.1''','警告') sys.exit() else: while 1: try: con=pymssql.connect(user='sa',password='sa',\ host='localhost',database='s1config') con.close() print '连接数据库成功,发送数据IP1!',loaclhost_ip,time.ctime() logfile('%s 连接数据库成功,发送数据IP1!%s \n'%(time.ctime(),loaclhost_ip)) s.sendto(loaclhost_ip,('255.255.255.255',3999)) time.sleep(20) except: dll_data.setDBFlag(0) for i in ipdata: if i!=loaclhost_ip: print '数据库连接不成功,发送数据IP',i,time.ctime() logfile('%s 数据库连接不成功,发送数据IP是:%s \n'%(time.ctime(),i)) try: s.sendto(i,('255.255.255.255',3999)) except: logfile('%s send不成功, \n'%(time.ctime())) try: print " 偶也,我要变身了,我成为接受方了",time.ctime() logfile('%s 我要变身了,我成为接受方了 \n'%(time.ctime())) acceptserver() except: logfile('%s 变身不成功, \n'%(time.ctime())) else: acceptserver()#--------------------------------------------------------------------------## 定义接受包函数#--------------------------------------------------------------------------#def acceptserver(): in_data=raw_input('1为接收端') if in_data=='1': logfile('%s DB为1,瓦咔咔,我要变成为发送方啦\n'%(time.ctime())) sendserver() else: s=socket.socket(socket.AF_INET,socket.SOCK_DGRAM) s.setsockopt(socket.SOL_SOCKET,socket.SO_REUSEADDR,1) s.setsockopt(socket.SOL_SOCKET,socket.SO_BROADCAST,1) s.bind((loaclhost_ip,3999)) while 1: print "等待数据中。。。。" d,a=s.recvfrom(1024) if a[0]=='127.0.0.1': #判断ip,不让他设置为127.0.0.1 windows_msg(" 'setting.ini'中的'GLOBAL'的字段不能设置为127.0.0.1",'警告') sys.exit() else: print '等来的数据',d,'来自',a,time.ctime() logfile('%s 等来的数据,%s,来自,%s\n'%(time.ctime(),d,a)) if d==loaclhost_ip: print d,'是我的IP',"瓦咔咔,我要变成为发送方啦",time.ctime() logfile('%s %s是我的IP,瓦咔咔,我要变成为发送方啦\n'%(time.ctime(),d)) sendserver()acceptserver() |
|