使用Flask向Web服务器发布请求

时间:2014-06-12 08:10:09

标签: python post web flask

当您运行此python脚本时,您将在127.0.0.1:5000 /

上看到与flask连接的网络连接功能

但是,我无法弄清楚从开始运行脚本打印网络的所有功能。我的意思是我丢失了之前的数据,因此我可以在刷新页面时将网络的任何一项功能打印到我的网络服务器上。

我还没有在Flask文档中找到任何具体内容。有人说urllib2或post.request对它很有用,但我根本不是Flask和Python的新手。

提前致谢!

代码:

import socket, sys
from struct import *
from flask import Flask

app = Flask(__name__)

@app.route('/')

def hello_world():  

s = socket.socket(socket.AF_INET, socket.SOCK_RAW, socket.IPPROTO_TCP)

while True:

        packet = s.recvfrom(65536)

        packet = packet[0]

        ip_header = packet[0:20]

        iph = unpack('!2B3H2BH4s4s' , ip_header)    

        t_length = iph[2] 
        protocol = iph[6]

        s_addr = socket.inet_ntoa(iph[8]);
        d_addr = socket.inet_ntoa(iph[9]);

        protocol_s = protocol    

        if protocol == 1:
            protocol_s = 'ICMP'
        if protocol == 6:
            protocol_s = 'TCP'
        if protocol == 17:
            protocol_s = 'UDP'

        tcp_header = packet[20:40]

        tcph = unpack('!HHLLBBHHH' , tcp_header)

        dest_port = tcph[1]     

    test = 'Protocol : ' + protocol_s + ' | Source Address : ' + str(s_addr) + ' | Destination Address : ' + str(d_addr) + ' | Dest Port : ' + str(dest_port) + ' | Packet Length : ' + str(t_length)

    return test

if __name__ == '__main__':
    app.run()

1 个答案:

答案 0 :(得分:1)

首先,Flask是一个WSGI框架。它仅适用于TCP / IP,HTTP是您将在大多数情况下中使用的协议。您可以使用websockets和其他协议,但它们也可以在TCP上工作。套接字处理已经由服务器完成,您不必担心它。

要获取有关连接的信息,我不确定您能获得多少。您可以查看flask.Requestwerkzeug.wrappers.Request对象。

例如,您可以从request

获取远程地址
from flask import request

@app.route('/')
def hello():
    print request.remote_addr