no message
This commit is contained in:
parent
4358142573
commit
3b5beeef9a
72
tcpcgi/TcpCgi.cpp
Normal file
72
tcpcgi/TcpCgi.cpp
Normal file
@ -0,0 +1,72 @@
|
|||||||
|
#include "TcpCgi.hpp"
|
||||||
|
|
||||||
|
|
||||||
|
namespace{
|
||||||
|
LocalServer *cidwServer = LocalServer::instance();
|
||||||
|
}
|
||||||
|
|
||||||
|
TcpCgi::TcpCgi()
|
||||||
|
{
|
||||||
|
print_light_green("TcpCgi Init\n");
|
||||||
|
}
|
||||||
|
|
||||||
|
void TcpCgi::startCgiServer()
|
||||||
|
{
|
||||||
|
int listenfd, connfd;
|
||||||
|
int mw_optval = 1;
|
||||||
|
|
||||||
|
struct sockaddr_in servaddr;
|
||||||
|
char buff[40960];
|
||||||
|
int n;
|
||||||
|
if( (listenfd = socket(AF_INET, SOCK_STREAM, 0)) == -1 ){
|
||||||
|
printf("create socket error: %s(errno: %d)\n",strerror(errno),errno);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
setsockopt(listenfd, SOL_SOCKET, SO_REUSEADDR, (char *)&mw_optval,sizeof(mw_optval));
|
||||||
|
|
||||||
|
memset(&servaddr, 0, sizeof(servaddr));
|
||||||
|
servaddr.sin_family = AF_INET;
|
||||||
|
servaddr.sin_addr.s_addr = htonl(INADDR_ANY);
|
||||||
|
servaddr.sin_port = htons(7305);
|
||||||
|
|
||||||
|
if( bind(listenfd, (struct sockaddr*)&servaddr, sizeof(servaddr)) == -1){
|
||||||
|
printf("bind socket error: %s(errno: %d)\n",strerror(errno),errno);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if( listen(listenfd, 10) == -1){
|
||||||
|
printf("listen socket error: %s(errno: %d)\n",strerror(errno),errno);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
while(1){
|
||||||
|
if( (connfd = accept(listenfd, (struct sockaddr*)NULL, NULL)) == -1) {
|
||||||
|
printf("accept socket error: %s(errno: %d)",strerror(errno),errno);
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
n = recv(connfd, buff, 40960, 0);
|
||||||
|
if ( n <= 0) {
|
||||||
|
print_info("recv fail\n");
|
||||||
|
close(connfd);
|
||||||
|
} else {
|
||||||
|
buff[n] = '\0';
|
||||||
|
|
||||||
|
std::string recvData = std::string(buff);
|
||||||
|
std::string reqData = cidwServer->HandleCgi_cmd(recvData);
|
||||||
|
//print_info("send cgi : %s\n length = %d\n", reqData.c_str(),reqData.length());
|
||||||
|
if( send(connfd, reqData.c_str(), reqData.length(), 0) < 0){
|
||||||
|
printf("send msg error: %s(errno: %d)\n", strerror(errno), errno);
|
||||||
|
}
|
||||||
|
close(connfd);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
close(listenfd);
|
||||||
|
return;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
TcpCgi::~TcpCgi()
|
||||||
|
{
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
31
tcpcgi/TcpCgi.hpp
Normal file
31
tcpcgi/TcpCgi.hpp
Normal file
@ -0,0 +1,31 @@
|
|||||||
|
#ifndef TCPCGI_H
|
||||||
|
#define TCPCGI_H
|
||||||
|
|
||||||
|
#include <vector>
|
||||||
|
#include <string>
|
||||||
|
#include <boost/asio.hpp>
|
||||||
|
#include <boost/thread/thread.hpp>
|
||||||
|
#include <boost/lexical_cast.hpp>
|
||||||
|
#include <json/json.h>
|
||||||
|
#include <boost/array.hpp>
|
||||||
|
#include "../common/SH_CommonFunc.hpp"
|
||||||
|
#include "../API_log/SH_log.h"
|
||||||
|
#include "../utility/SH_MySingleton.hpp"
|
||||||
|
#include "../common/SH_global.h"
|
||||||
|
#include "../localserver/SH_LocalServer.hpp"
|
||||||
|
|
||||||
|
|
||||||
|
class TcpCgi : public MySingleton<TcpCgi> {
|
||||||
|
|
||||||
|
public:
|
||||||
|
TcpCgi();
|
||||||
|
~TcpCgi();
|
||||||
|
|
||||||
|
void startCgiServer();
|
||||||
|
};
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
Loading…
x
Reference in New Issue
Block a user