Python UDP服务器解析并发送接收数据到MySQL
我正在做一个概念验证的研究项目,使用Python写了一个UDP套接字服务器,用来接收数据。客户端通过UDP发送名字和姓氏到服务器。我希望在UDP套接字服务器上接收到这些数据后,把它们存入MySQL数据库,字段分别是f_name(名字)和l_name(姓氏)。
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嗅探器来解决,但那样有点麻烦。概念上我想要的是这样的流程: 1. 套接字服务器接收到数据 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服务器我看不到任何消息,所以似乎解析数据的功能在服务器上不工作。任何帮助或指导都会很感激。
1 个回答
0
在你的服务器上,当你收到 data
时,你并没有调用 parse
函数。你只是把 data
的内容打印出来。加上那行带注释的代码,然后看看结果。
while True:
data, addr = sock.recvfrom(1024) # buffer size is 1024 bytes
print "received message:", data
parse(data) # Call the Function