• 大小: 133KB
    文件类型: .zip
    金币: 1
    下载: 0 次
    发布日期: 2021-06-12
  • 语言: C/C++
  • 标签: http  server  linux  

资源简介

linux 平台下实现一个简单httpserver 具体可以参考个人博客。

资源截图

代码片段和文件信息

/*

 * pub.c
 *
 *  Created on: 2015-4-16
 *      Author: hsc
 */
#include
#include
#include
#include
#include
#include
#include 
#include 
#include

#include“pub.h“
#include“thread_work.h“
char LOGBUF[1024];
void save_log(char *buf)
{
      FILE *fp = fopen(“log.txt““a+“);  
      fputs(buffp);  
      fclose(fp);  
}
void setdaemon() //设置为守护进程
{
pid_t pid sid;
pid = fork();
if (pid < 0)
{
memset(LOGBUF0sizeof(LOGBUF));
sprintf(LOGBUF“fork failed %s\n“ strerror(errno));
save_log(LOGBUF);
exit (EXIT_FAILURE);
}
if (pid > 0)
{
exit (EXIT_SUCCESS);
}

if ((sid = setsid()) < 0)
{
printf(“setsid failed %s\n“ strerror(errno));
exit (EXIT_FAILURE);
}
  /*if (chdir(“/“) < 0)
 {
 printf(“chdir failed %s\n“ strerror(errno));
 exit(EXIT_FAILURE);
 }*/
 umask(0);
 close(STDIN_FILENO);
 close(STDOUT_FILENO);
 close(STDERR_FILENO);

}

const char *get_filetype(const char *filename) //根据扩展名返回文件类型描述
{
////////////得到文件扩展名///////////////////
char sExt[32];
const char *p_start=filename;
memset(sExt 0 sizeof(sExt));
while(*p_start)
{
if (*p_start == ‘.‘)
{
p_start++;
strncpy(sExt p_start sizeof(sExt));
break;
}
p_start++;
}

////////根据扩展名返回相应描述///////////////////

if (strncmp(sExt “bmp“ 3) == 0)
return “image/bmp“;

if (strncmp(sExt “gif“ 3) == 0)
return “image/gif“;

if (strncmp(sExt “ico“ 3) == 0)
return “image/x-icon“;

if (strncmp(sExt “jpg“ 3) == 0)
return “image/jpeg“;

if (strncmp(sExt “avi“ 3) == 0)
return “video/avi“;

if (strncmp(sExt “css“ 3) == 0)
return “text/css“;

if (strncmp(sExt “dll“ 3) == 0)
return “application/x-msdownload“;

if (strncmp(sExt “exe“ 3) == 0)
return “application/x-msdownload“;

if (strncmp(sExt “dtd“ 3) == 0)
return “text/xml“;

if (strncmp(sExt “mp3“ 3) == 0)
return “audio/mp3“;

if (strncmp(sExt “mpg“ 3) == 0)
return “video/mpg“;

if (strncmp(sExt “png“ 3) == 0)
return “image/png“;

if (strncmp(sExt “ppt“ 3) == 0)
return “application/vnd.ms-powerpoint“;

if (strncmp(sExt “xls“ 3) == 0)
return “application/vnd.ms-excel“;

if (strncmp(sExt “doc“ 3) == 0)
return “application/msword“;

if (strncmp(sExt “mp4“ 3) == 0)
return “video/mpeg4“;

if (strncmp(sExt “ppt“ 3) == 0)
return “application/x-ppt“;

if (strncmp(sExt “wma“ 3) == 0)
return “audio/x-ms-wma“;

if (strncmp(sExt “wmv“ 3) == 0)
return “video/x-ms-wmv“;

return “text/html“;
}

int socket_create(int port)
{
int st = socket(AF_INET SOCK_STREAM 0);
int on =1;
if (st == -1)
{
memset(LOGBUF0sizeof(LOGBUF));
sprintf(LOGBUF“%s%d:socker error %s\n“ __FILE__ __LINE__ strerror(errno));
save_log(LOGBUF);
return 0;
}
if (setsockopt(st SOL_SOCKET SO_REUSEADDR &on sizeof(on)) == -1)
{
memset(LOGBUF0sizeof(LOGBUF));
sprintf(LOGBUF“setsockopt failed %s\n“ strerror(errno));
save_log(LOGB

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----
     文件        2550  2010-08-02 10:44  favicon.ico
     文件       96974  2015-05-13 13:32  index.html
     目录           0  2015-05-13 13:32  index_files\
     文件      190931  2015-05-13 13:32  index_files\all_instant_search1_c1d4131e.js
     文件         705  2015-05-13 13:32  index_files\baidu_jgylogo3.gif
     文件        7877  2015-05-13 13:32  index_files\bd_logo1.png
     文件        1224  2015-05-13 13:32  index_files\env_beb83b45.swf
     文件       93680  2015-05-13 13:32  index_files\jquery-1.js
     文件        1719  2015-05-13 13:32  index_files\JSocket_9a52fc3e.swf
     文件         204  2015-05-10 11:11  Makefile
     文件        5688  2015-05-13 20:37  pub.c
     文件         368  2015-05-13 18:41  pub.h
     文件         522  2015-05-13 18:36  server.c
     文件        3032  2015-05-13 18:45  thread_work.c
     文件         297  2015-05-10 14:06  thread_work.h

评论

共有 条评论