2014-07-11 40 views
0

我正在研究一些概念研究研究项目的证明,并有python udp套接字服务器来监听收到的数据。 客户端将UDP上的数据NAME和FAMILY NAME发送到服务器。 我想在UDP套接字服务器端收到该数据,并在接收时将此数据发送到带有两个字段f_name和l_name的mysql数据库。Python的udp服务器解析并发送收到的数据到MySQL

import socket 

UDP_IP = "192.168.1.10" 
UDP_PORT = 9000 

sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) 
sock.bind((UDP_IP, UDP_PORT)) 
print "UDP SERVER STARTED!" 

while True: 
    data, addr = sock.recvfrom(1024) # buffer size is 1024 bytes 
    print "MSG Received:", data 

这个例子取自网络,并与此服务器我在控制台上获取数据。 我希望如下所示,当然可以更改代码/概念。这可以用scapy sniffer来解决,但那会很脏。 概念我想喜欢有TI的东西: 1. SOCEKT服务器接收收到 2.解析数据数据,该数据发送到MySQL

我开始考虑到这一点,但不工作

import socket 
import MySQLdb 

UDP_IP = "192.168.1.10" 
UDP_PORT = 9000 

sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) 
sock.bind((UDP_IP, UDP_PORT)) 
print "UDP SERVER STARTED!" 

while True: 
    data, addr = sock.recvfrom(1024) # buffer size is 1024 bytes 
    print "received message:", data 

def parse(data): 
    db = MySQLdb.connect("localhost","db_user","db_pass","directory_db") 
    cursor = db.cursor() 
    # Params to insert into DB 
    f_nameObj = re.search(r'NAME: (.*?) .*', data, re.M|re.I) 
    if f_name: 
     f_name = f_nameObj.group(1) 

    l_nameObj = re.search(r'SURNAME: (.*?) .*', data, re.M|re.I) 
    if l_name: 
     l_name = l_nameObj.group(1) 

    # MySQL EXECUTION 
    cursor.execute(""" 
    INSERT INTO dictionary (f_name, l_name) VALUES (%s, %s)""",(f_name,l_name)) 
    # 
    db.commit() 

有了这种类型的udp服务器,我看不到任何消息,因此似乎函数解析数据不能与服务器一起工作。 任何帮助或指导,将不胜感激

+0

你的问题是什么?有什么异常? – shazin

+0

如果在def解析(数据)函数中,我看不到任何数据。如果只是启动udp服务器,我看到控制台上的数据即将到来,但我想在发送到数据库的功能 – user1627588

回答

0

在您的服务器,当你收到data你不叫parse function.You只是打印的data内容。添加注释并查看结果。

while True: 
    data, addr = sock.recvfrom(1024) # buffer size is 1024 bytes 
    print "received message:", data 
    parse(data) # Call the Function 
相关问题