资源简介
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
- 上一篇:NTFS数据恢复的c++类代码
- 下一篇:车牌识别源码
相关资源
- 用Socket 实现http协议
- linux下的C语言POSIX正则表达式头文件和
- Oracle 84%安装报错compat-libstdc++-33-3.2.
- 基于Linux 下qt改版的聊天室
- linux环境下C语言实现图片的socket传输
- HTTP上传和C++封装类支持GET、POST多种方
- C++实现http客户端连接服务端及客户端
- linux C语言 socket通信聊天小程序
- C++ httpclient类
- linux下的简易聊天室
- 纯C语言写的https模拟GET和POST
- C语言windowlinux平台的SNTP实现
- AES5种加密模式源码C语言
- yaolog v1.5(很有特色的C++跨平台日志库
- c++ http
- c++ http并保存到本地
- C++ HTTP GET,POST的简单
- 基于Linux的VIM编辑器超炫配置
- 飞鸽传书 Linux C编程项目
- C语言实现:Linux下的myshell
- C语言linux实现ls功能
- LinuxC语言实现CP命令(edsionte.com)
- 观察者模式 c++ 实现
- linux下使用socket实现ftp的客户端和服务
- Quartus_18.0_链接和破解器Windows+Linux版
- jsoncpp-1.6.5.tar.gz
- 利用LINUX FIFO命名管道技术实现双向聊
- c++教程网的linux网络编程视频
- DHCP源码含server relay client
- C++实现的共享内存缓冲区
评论
共有 条评论