zoukankan      html  css  js  c++  java
  • 基于Ryu的服务器实现及相关请求访问处理

    基于Ryu的服务器实现及相关请求访问处理

    前言及问题描述

    近期又遇到了一个非常棘手的问题,由于Ryu是通过Python语言开发的,通过Ryu的wsgi的方式建立服务器,无法解析PHP,通过多次方法解决无效,后来直接基于Python做了一次实验,通过Python语言去调用相应脚本。

    实现方案

    实现方案,通过ryu的web gui的实现进行改装

    改装后代码

    import os
    import commands
    from webob.static import DirectoryApp
    
    from ryu.app.wsgi import ControllerBase, WSGIApplication, route
    from ryu.base import app_manager
    
    
    
    PATH = os.path.dirname(__file__)
    
    
    # Serving static files
    class GUIServerApp(app_manager.RyuApp):
        _CONTEXTS = {
            'wsgi': WSGIApplication,
        }
    
        def __init__(self, *args, **kwargs):
            super(GUIServerApp, self).__init__(*args, **kwargs)
    
            wsgi = kwargs['wsgi']
            wsgi.register(GUI_P4_ServerController)
    
    class GUI_P4_ServerController(ControllerBase):
        def __init__(self, req, link, data, **config):
            super(GUI_P4_ServerController, self).__init__(req, link, data, **config)
            path = "%s/html/network_slice_web" % PATH
            self.static_app = DirectoryApp(path)
    
        @route('topology', '/{filename:.*}', methods=['GET'])
        def static_handler(self, req, **kwargs):
            if kwargs['filename']:
                if kwargs['filename'] == "xxx":   #访问请求的url xxx,通过req接受数据
                    #可以通过req接受请求的数据,包括Get的请求。
                    #抓取数据后,这里就是你开始表演的地方,根据对应的需求,进行相应的代码编写
                req.path_info = kwargs['filename']
            return self.static_app(req)
    
  • 相关阅读:
    NHbiernate 配置
    NHibernate开发入门
    Thread 线程简单例子
    C#中委托和事件
    DataGridView 去掉多余的列
    ASP.NET C# 有程序集加不了解决办法
    oracle“记录被另一个用户锁住”
    Android 控件属性
    Android 入门
    MVC 视频笔记
  • 原文地址:https://www.cnblogs.com/wpqwpq/p/6854538.html
Copyright © 2011-2022 走看看