'''
Created on 2009-3-18
@author: Administrator
'''
from twisted.internet import protocol, reactor
from time import ctime
import struct
import MySQLdb
PORT = 9090
class TSServProtocol(protocol.Protocol):
'''Data1 = [<<1:32/little, 1, 10>>, "srcmac", <<1234:32/little, 1, 2, 3, 4, 1, 2, 3, 4, 1234:32/little, 5>>,
"abcde", "dstmac", <<1, 2, 3, 4, 1234:32/little, 1, 4:16/little>>, "love"],'''
'''icc6si4s4sic5s6s4sich4s'''
receiveData = "";
fieldname = ['time', 'protocoltype', 'msgtype',
'srcmac', 'nodeid', 'nodeip', 'srcip', 'srcport', 'srcid_len', 'srcid',
'dstmac', 'dstip', 'dstport', 'language_flag', 'msg_len1', 'msg_len2', 'msftext']
def connectionMade(self):
clnt = self.clnt = self.transport.getPeer().host
print '...connected from:', clnt
def dataReceived(self, data):
#self.transport.write('[%s] %s'% (ctime(),data))
#self.transport.write('[%s] %s' % (ctime(), 'x'))
self.receiveData = self.receiveData + data
#receiveData = receiveData + data
#print self.receiveData
length = 0
head = 0
head_len = 4
body = 0
while len(self.receiveData) >= head_len:
head = self.receiveData[0:head_len]
length = struct.unpack('i', head)[0]
print 'length', length
if len(self.receiveData) >= length & length != 0:
print 'head', head
self.onepckgdt = self.receiveData[0:length]
self.receiveData = self.receiveData[length:]
###
i1 = struct.unpack("c", self.onepckgdt[32])[0]
print 'i1', ord(i1)
tmp1 = self.onepckgdt[32 + 1 + ord(i1) + 15:32 + 1 + ord(i1) + 15 + 2]
print 'length of tmp1', len(tmp1)
tmp2 = struct.unpack("BB", tmp1)
i2 = tmp2[0] + tmp2[1] * 256
print 'i2', i2
###
self.onepckgdt = self.onepckgdt[head_len:length]
print "!iBB6si4s4siB" + str(ord(i1)) + "s" + "6s4siB" + "BB" + str(i2) + "s"
body1 = struct.unpack("iBB6si4s4siB" + str(ord(i1)) + "s" + "6s4siB" + "BB" + str(i2) + "s", self.onepckgdt)
insrt2MySQL(self.fieldname,body1)
print self.receiveData
print len(self.receiveData)
###
else:
break
#print receiveData
#for data in receiveData:
# print ord(data)
print '==='
def insrt2MySQL(fieldname, fieldvalue):
print "-" * 66
print 'len of fieldname', len(fieldname)
print 'len of fieldvalue', len(fieldvalue)
dict = {}
for i in range(len(fieldvalue)):
print fieldname[i], ":", type(fieldvalue[i]), fieldvalue[i]
dict[fieldname[i]]=fieldvalue[i]
print fieldname[i], ":", type(dict[fieldname[i]]), dict[fieldname[i]]
print
print "insert into msn(time, protocoltype)"
print " values(",dict['time'],",",dict['protocoltype'],")"
print "insert into msn(time, protocoltype)"+" values("+str(dict['time'])+","+str(dict['protocoltype'])+")"
###
db=MySQLdb.connect(host="192.168.0.231",user="root",passwd="admin",db="test",charset="utf8")
cursor=db.cursor()
#sql statement
#cursor.execute("insert into person(name, age, gender) values('wangzhi','25','male')")
sql = "insert into msn(time, protocoltype) values(%s, %s)"
cursor.execute(sql,(dict['time'], dict['protocoltype']))
cursor.execute("select * from msn")
#get the result set
result=cursor.fetchall()
#iterate thtough the result set
for i in result:
print(i)
print
cursor.execute("select LAST_INSERT_ID()")
result = cursor.fetchall()
for i in result:
print(i)
print
cursor.close
pass
factory = protocol.Factory()
factory.protocol = TSServProtocol
print 'waiting for connection...'
reactor.listenTCP(PORT, factory)
reactor.run()