HTTP服务器与数据库集成项目笔记
项目概述
- 基于C语言的HTTP服务器程序
- 集成SQLite3数据库管理功能
- 实现用户注册/登录和商品搜索功能
- 使用POSIX套接字API实现网络通信
技术栈
-
网络层
- 使用
socket()创建TCP套接字 bind()绑定8080端口listen()监听连接请求accept()处理客户端连接- 支持HTTP协议基础响应格式
- 使用
-
数据库层
-
SQLite3轻量级数据库
-
数据库文件:
123.db -
核心数据表:
sqlCREATE TABLE users ( id INTEGER PRIMARY KEY AUTOINCREMENT, username TEXT UNIQUE NOT NULL, password TEXT NOT NULL );sqlCREATE TABLE goods ( goods_id INTEGER PRIMARY KEY AUTOINCREMENT, goods_name TEXT NOT NULL, shop_price REAL, ... );
-
-
功能模块
- 用户认证系统
- 注册:
db_register_user() - 登录:
db_login_user()
- 注册:
- 商品管理
- 示例数据预置
- 搜索功能:
handle_search_results()
- 用户认证系统
核心代码逻辑
c
// 主服务循环
while (1) {
int conn_fd = accept(server_fd, (struct sockaddr*)&client_addr, &addr_len);
char buffer[BUFFER_SIZE];
read(conn_fd, buffer, sizeof(buffer));
// 请求路由解析
if (strstr(buffer, "GET /login")) {
handle_login_page(conn_fd);
}
else if (strstr(buffer, "POST /register")) {
// 解析表单数据
handle_register_page(conn_fd);
}
}
数据库操作示例
c
// 用户注册实现
int db_register_user(const char *username, const char *password) {
sqlite3_prepare_v2(db, "INSERT INTO users VALUES (?,?)", -1, &stmt, NULL);
sqlite3_bind_text(stmt, 1, username, -1, SQLITE_STATIC);
sqlite3_bind_text(stmt, 2, password, -1, SQLITE_STATIC);
int rc = sqlite3_step(stmt);
}
项目亮点
- 完整的HTTP请求/响应处理流程
- 数据库表结构设计合理
- 预置商品数据便于功能演示
- 错误处理机制完善(SQLite错误码检查)
优化建议
- 增加密码加密存储(如bcrypt)
- 实现会话管理(Cookie/Session)
- 支持静态文件服务(HTML/CSS)
- 添加SQL注入防护
执行流程
- 初始化数据库表结构
- 启动HTTP监听服务
- 根据请求路径分发处理:
/login→ 登录页面/register→ 注册处理/search→ 商品查询
- 返回HTTP响应(含状态码/内容类型)
HTTP服务器与数据库集成项目笔记
项目概述
- 基于C语言的HTTP服务器程序
- 集成SQLite3数据库管理功能
- 实现用户注册/登录和商品搜索功能
- 使用POSIX套接字API实现网络通信
技术栈
-
网络层
- 使用
socket()创建TCP套接字 bind()绑定8080端口listen()监听连接请求accept()处理客户端连接- 支持HTTP协议基础响应格式
- 使用
-
数据库层
-
SQLite3轻量级数据库
-
数据库文件:
123.db -
核心数据表:
sqlCREATE TABLE users ( id INTEGER PRIMARY KEY AUTOINCREMENT, username TEXT UNIQUE NOT NULL, password TEXT NOT NULL );sqlCREATE TABLE goods ( goods_id INTEGER PRIMARY KEY AUTOINCREMENT, goods_name TEXT NOT NULL, shop_price REAL, ... );
-
-
功能模块
- 用户认证系统
- 注册:
db_register_user() - 登录:
db_login_user()
- 注册:
- 商品管理
- 示例数据预置
- 搜索功能:
handle_search_results()
- 用户认证系统
核心代码逻辑
c
// 主服务循环
while (1) {
int conn_fd = accept(server_fd, (struct sockaddr*)&client_addr, &addr_len);
char buffer[BUFFER_SIZE];
read(conn_fd, buffer, sizeof(buffer));
// 请求路由解析
if (strstr(buffer, "GET /login")) {
handle_login_page(conn_fd);
}
else if (strstr(buffer, "POST /register")) {
// 解析表单数据
handle_register_page(conn_fd);
}
}
数据库操作示例
c
// 用户注册实现
int db_register_user(const char *username, const char *password) {
sqlite3_prepare_v2(db, "INSERT INTO users VALUES (?,?)", -1, &stmt, NULL);
sqlite3_bind_text(stmt, 1, username, -1, SQLITE_STATIC);
sqlite3_bind_text(stmt, 2, password, -1, SQLITE_STATIC);
int rc = sqlite3_step(stmt);
}
项
项目亮点
- 完整的HTTP请求/响应处理流程
- 数据库表结构设计合理
- 预置商品数据便于功能演示
- 错误处理机制完善(SQLite错误码检查)
优化建议
- 增加密码加密存储(如bcrypt)
- 实现会话管理(Cookie/Session)
- 支持静态文件服务(HTML/CSS)
- 添加SQL注入防护
执行流程
- 初始化数据库表结构
- 启动HTTP监听服务
- 根据请求路径分发处理:
/login→ 登录页面/register→ 注册处理/search→ 商品查询
- 返回HTTP响应(含状态码/内容类型)
结果图



