我正在研究一些概念研究项目的证明,并且有一个收听数据的python udp套接字服务器。 客户端在UDP上将数据NAME和FAMILY NAME发送到服务器。 我希望在UDP套接字服务器端接收数据,并在接收时将此数据发送到具有两个字段f_name和l_name的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嗅探器解决的,但那会很脏。 从概念上讲,我希望有类似的东西: 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 :(得分: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