資源簡介
在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);
/*-----------------------------------------------------
- 上一篇:菜鳥教程網前端教程PDF
- 下一篇:通用商城后臺管理系統模板源碼
評論
共有 條評論