• 大小: 25.25MB
    文件类型: .gz
    金币: 1
    下载: 0 次
    发布日期: 2023-07-08
  • 语言: Html/CSS
  • 标签: c  html  cgi  

资源简介

在linux 基于Qt 实现的一个简单的广告机项目 , 需要把html文件放入 htdoc目录, cgi 程序 放到 cgi目录 运行服务器

资源截图

代码片段和文件信息

/* 客户端连接请求格式: 请求模式&文件类型&路径文件名 
   模式:
PUT: 上传文件到广告机
GET: 从广告机下载文件
DEL: 删除文件
START:打开广告机程序
RESTART:重新打开广告机
WINSTART:指定大小打开广告机
CLOSE:关闭广告机程序
RESTART:重新打开
类型: VIDEO视频 PICTURE1图片1 PICTURE2图片2 LOGO LIST等 根据类型会进入相应的目录 只在该目录下建立或打开文件
文件名: 只取名字 不取路径  类型已经决定了路径
zcb 2012.6.26
 */

#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 

int is_qtstart = 0; //qt是否开启标志
pid_t qtpid; //qt程序pid值

/*--------------------------------------------------------------------------------*/ 
// 宏定义 
/*--------------------------------------------------------------------------------*/ 
#define BUFFER_SIZE 4096
#define BIND_PORT 8001

/* 目录宏 服务器只会进入这些目录 不管上传或下载 */
#define VIDEO_PATH “./guanggaoji/video“
#define PICTURE1_PATH “./guanggaoji/picture1/“
#define PICTURE2_PATH “./guanggaoji/picture2/“
#define PICTURE3_PATH “./guanggaoji/picture3/“
#define LIST_PATH “./guanggaoji/list/“
#define QT_PROGRAM “guanggaoji“
#define QT_PATH “./guanggaoji“

/*--------------------------------------------------------------------------------*/ 
// 函数声明 
/*--------------------------------------------------------------------------------*/ 
int change_directory(char *); //改变目录 返回0成功 -1失败
void getfile(int char *); //从服务器下载文件
void putfile(int char *); //上传文件到服务器
void delfile(int char *); //删除文件
void close_qt(void); //关闭qt程序
void start_qt(char * char *); //打开qt程序
void child_process_main(int char * char *); //创建进程处理新连接 主进程继续监听
void sigchld_handler(int); //SIGCHLD信号处理 给子进程收尸

/*--------------------------------------------------------------------------------*/ 
// 主函数入口
/*--------------------------------------------------------------------------------*/ 
int main(int argc char **argv)
{
/*----------------------------------------------------------------------------*/ 
// 信号处理
/*----------------------------------------------------------------------------*/ 
struct sigaction act;

// 初始化
memset(&act 0 sizeof(act));
act.sa_handler = sigchld_handler;
sigemptyset(&act.sa_mask);
act.sa_flags = 0;

// 原型:int sigaction(int signum const struct sigaction *act struct sigaction *oldact);
sigaction(SIGCHLD &act NULL); //捕获SIGCHLD信号

start_qt(NULL NULL); //打开广告机开始播放

/*----------------------------------------------------------------------------*/ 
// 父进程 创建socket
/*----------------------------------------------------------------------------*/ 
int listening_socket;
unsigned short port = BIND_PORT;

// 原型:int socket(int domain int type int protocol);
if ((listening_socket = socket(PF_INET SOCK_STREAM 0)) < 0) {
// 创建失败 
fprintf(stderr “[%d]Create new TCP socket failed: %s\n“ getpid() strerror(errno));
exit(1);
}
printf(“[%d]Created a new TCP socket listening_socket = %d.\n“ getpid() listening_socket);

/*-----------------------------------------------------

评论

共有 条评论