簡體   English   中英

python udp服務器解析並將接收到的數據發送到MySQL

[英]python udp server parse and send received data to MySQL

我正在研究一些概念驗證研究項目,並且有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服務器,我看不到任何消息,因此似乎無法解析服務器數據。 任何幫助或指導將不勝感激

在服務器中,當您接收到data您不會調用parse函數。您只需打印data內容即可。 添加帶有注釋的行並查看結果。

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM