博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
【六】tf和cgi进行联合试验,完成日志服务器
阅读量:6992 次
发布时间:2019-06-27

本文共 3940 字,大约阅读时间需要 13 分钟。

【任务6】tf和cgi进行联合试验,完成日志服务器

改装gen-cpp目录下client.cpp文件

  • 代码如下:
#include "RecSys.h"#include 
#include
#include
#include
#include
#include
#include
using namespace apache::thrift;using namespace apache::thrift::protocol;using namespace apache::thrift::transport;using namespace std;using std::string;using boost::shared_ptr;inline void send_response( FCGX_Request& request, const std::string& resp_str) { FCGX_FPrintF(request.out, "Content-type: text/html;charset=utf-8\r\n\r\n"); FCGX_FPrintF(request.out, "%s", resp_str.c_str()); FCGX_Finish_r(&request);}int main(int argc, char **argv){ // 1.初始化cgi FCGX_Init(); FCGX_Request request; FCGX_InitRequest(&request, 0, 0); // 2.连接connect server rpc boost::shared_ptr
socket(new TSocket("localhost",9090)); boost::shared_ptr
transport(new TBufferedTransport(socket)); boost::shared_ptr
protocol(new TBinaryProtocol(transport)); transport->open(); RecSysClient client(protocol); while(FCGX_Accept_r(&request) >= 0) { // http page -> client std::string send_data = FCGX_GetParam("QUERY_STRING", request.envp); string receive_data; // client >> server // server >> client client.rec_data(receive_data,send_data); cout << "receive http params: " << send_data << std::endl; cout << "receive server data: " << receive_data << endl; /*send_response(request, return_str);*/ send_response(request, receive_data); } transport->close(); return 0;}

启动Nginx服务和gen-cpp目录下编译后的"server"

  • client.cpp文件代码修改为:
#include "RecSys.h"#include 
#include
#include
#include
#include
#include
#include
using namespace apache::thrift;using namespace apache::thrift::protocol;using namespace apache::thrift::transport;using namespace std;using std::string;using boost::shared_ptr;inline void send_response( FCGX_Request& request, const std::string& resp_str) { FCGX_FPrintF(request.out, "Content-type: text/html;charset=utf-8\r\n\r\n"); FCGX_FPrintF(request.out, "%s", resp_str.c_str()); FCGX_Finish_r(&request);}int main(int argc, char **argv){ // 1.初始化cgi FCGX_Init(); FCGX_Request request; FCGX_InitRequest(&request, 0, 0); // 2.连接connect server rpc boost::shared_ptr
socket(new TSocket("localhost",9090)); boost::shared_ptr
transport(new TBufferedTransport(socket)); boost::shared_ptr
protocol(new TBinaryProtocol(transport)); transport->open(); RecSysClient client(protocol); while(FCGX_Accept_r(&request) >= 0) { // http page -> client std::string send_data = FCGX_GetParam("QUERY_STRING", request.envp); string receive_data; // client >> server // server >> client client.rec_data(receive_data,send_data); cout << "receive http params: " << send_data << std::endl; cout << "receive server data: " << receive_data << endl; /*send_response(request, return_str);*/ send_response(request, receive_data); } transport->close(); return 0;}

Makefile 文件修改为

G++ = g++CFLAGS = -g -WallINCLUDES = -I./ -I/usr/local/include/thriftLIBS = -L/usr/local/lib/*.so -lthriftSER_OBJECT = RecSys.cpp RecSys_constants.cpp RecSys_types.cpp RecSys_server.skeleton.cppCLI_OBJECT = RecSys.cpp client.cppserver: $(SER_OBJECT)    $(G++) $(CFLAGS) $(INCLUDES) $(SER_OBJECT) $(LIBS) -o serverclient: $(CLI_OBJECT)    $(G++) $(CFLAGS) $(INCLUDES) $(CLI_OBJECT) $(LIBS) -o client.PHONY: cleanclean:    rm -f server client
  • 命令:make servermake clientmake clean等会对应执行名相应的命令

启动Nginx服务

  • 命令:安装目录/sbin/nginx
  • 检查端口是否开启:netstat -antup | grep nginx,端口为:80
  • 打开浏览器查看服务是否开启,

启动gen-cpp目录下的"server"

  • 命令:./server
  • 此时已经启动了cgi代理,查看端口是否监听成功:netstat -antup | grep 8088

启动cgi服务

  • 启动之前先编译client.cpp文件,命令:make client

  • 命令:/usr/local/src/nginx/sbin/spawn-fcgi -a 127.0.0.1 -p 8088 -f /test/thrift_test/python_thrift_demo/gen-cpp/client

查看整个流程的服务是否成功

  • 打开浏览器,,页面(也就是客户端)会返回server端输出的内容,同时server端会接收到客户端(也就是浏览器)发送的信息

  • 如图:829534-20180516211122237-625491805.png

  • 带参数:

    • 客户端:829534-20180516211343454-1691462758.png

    • server端:829534-20180516211454096-1070026453.png

转载于:https://www.cnblogs.com/screen/p/9481737.html

你可能感兴趣的文章
Powershell查询多个指定的收件人是否收到特定主题的邮件
查看>>
Memcached进程挂掉自动重启脚本
查看>>
论“软件测试实施”
查看>>
windows2012的NIC Teaming配置
查看>>
关于Saltstack halite 配置管理及二次开发ui [原salt-ui]
查看>>
针对敲诈病毒(WanaCrypt0r2.0)的应对方案
查看>>
网络地址转换--静态NAT(上)
查看>>
网管到底要学什么(三)
查看>>
Exchange中限制部分用户外网访问
查看>>
.NET简谈组件程序设计之(delegate与event关系)
查看>>
21.Azure备份Azure上的虚拟机(下)
查看>>
Ext JS 4.1 RC2 Released发布
查看>>
《兵临城下》:360输在“斯大林格勒”?
查看>>
如何从互联网获取Puppet的各项特殊资源
查看>>
Smack知识知多少
查看>>
Amazon Workspace DaaS服务快速导读
查看>>
修改LigerUI的导航栏,改为Tab标签模式
查看>>
VMware View 与Citrix XenDesktop 用户体验大比拼-iPad篇
查看>>
Windows 10 TH2改进
查看>>
虚拟桌面的备份恢复最佳实践 第一部分
查看>>