在Linux环境中,Eclipse开发环境中生成web服务器下面是全部的代码,其中有注释,可以很容易理解:
WebServer.h 头文件:
#ifndef _WEBSERVER_H_
#define _WEBSERVER_H_
#include <arpa/inet.h>
#include <netinet/in.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <unistd.h>
#include <ctype.h>
#include <string.h>
#include <stdio.h>
typedef struct sockaddr sockSA;
typedef struct sockaddr_in SockAdr;
// 请求
typedef struct request{
char cMethod[16];
char cPath[256];
char cProto[16];
}req_t;
// 响应
typedef struct response{
int nCode; // 404 200
char *cType; // 文件后缀类型
req_t *req; // 请求
}res_t;
int Sock_bind(int nPort); // 绑定端口
void get_request(int fd,req_t *rq); // 获取请求
void response_b_404(int fd); // 响应
char *get_FileType(const char *pcFile); // 获取文件类型
void do_client(res_t *rs); // 处理数据,根据读取到的数据,做业务
void response_b_200(int fd,res_t *rs); // 响应
void response_b(int fd,res_t *rs); // 响应客户端
void doit(int fd); // 业务处理
#endif
WebServer.cpp 文件:
#include "WebServer.h"
#include <iostream>
using namespace std;
// *.html文件所在路径
char *cDir ="/home/WebServer/html";
// 绑定端口
int Sock_bind(int nPort)
{
int nSocketNumber = 0;
SockAdr serv;// 具体的ipv4地址
// 创建一个通讯设备
nSocketNumber = socket(AF_INET,SOCK_STREAM,0