Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

18 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Maye NetWork

Maye NetWork 是一系列 C/C++ 编写的基于 Windows 的网络代码库,用于创建可在 C/C++ 中调用的工具库。

项目结构

NetWork/
├── tcpSocket/          # TCP Socket 封装库(公共依赖)
│   ├── include/        # 头文件目录
│   ├── lib/            # 编译好的静态库
│   └── source/         # 源文件目录
├── CHttp/              # HTTP 服务器项目(使用 tcpSocket 静态库)
│   ├── zcMaye/         # 网站资源目录
│   ├── WebServer/      # 编译输出目录
│   ├── CHttp.c         # HTTP 核心处理逻辑
│   ├── CHttp.h         # HTTP 头文件
│   ├── main.c          # 主入口
│   └── CHttp.vcxproj   # VS 项目文件
├── CHttp - 副本/       # HTTP 服务器项目(内置 tcpSocket 源码)
│   ├── zcMaye/         # 网站资源目录
│   ├── WebServer/      # 编译输出目录
│   ├── CHttp.c         # HTTP 核心处理逻辑
│   ├── CHttp.h         # HTTP 头文件
│   ├── main.c          # 主入口
│   ├── tcpSocket.c     # 内置的 TCP Socket 实现
│   ├── tcpSocket.h     # 内置的 TCP Socket 头文件
│   ├── CHttp.sln       # VS 解决方案文件
│   └── CHttp.vcxproj   # VS 项目文件
├── CFtp/               # FTP 客户端项目
├── CFtpClient/         # FTP 客户端测试项目
├── CFtpServer/         # FTP 服务端测试项目
├── CSmtp/              # SMTP 邮件发送项目
├── MayeFtp/            # 完整 FTP 服务器项目
└── NetWork.sln         # 总解决方案文件

入门指南

环境要求

  • Windows 操作系统
  • Visual Studio(建议 2017 或更高版本)
  • Windows SDK(已随 Visual Studio 安装)

编译运行

  1. 克隆仓库
git clone https://github.com/zcmaye/NetWork.git
cd NetWork
  1. 打开解决方案

双击 NetWork.sln 文件,使用 Visual Studio 打开。

  1. 设置启动项目

在解决方案资源管理器中,右键单击需要运行的项目,选择「设为启动项目」。

  1. 编译运行

F5 键编译并运行项目。

项目说明

tcpSocket

TCP Socket 封装库,提供跨平台的 Socket 操作接口。

核心函数:

函数名 功能 参数 返回值
init_Socket() 初始化 Windows Socket 库 bool - 是否成功
close_Socket() 关闭 Windows Socket 库 bool - 是否成功
create_serverSocket(port) 创建服务器 Socket port - 监听端口 SOCKET - 服务器套接字
create_clientSocket(ip, port) 创建客户端 Socket ip - 服务器地址,port - 端口 SOCKET - 客户端套接字

CHttp

C 语言实现的轻量级 HTTP 服务器,支持静态文件服务。

核心功能:

  • HTTP GET 请求处理
  • 静态文件服务(HTML、CSS、图片、下载文件)
  • 404 错误处理
  • 支持多种 Content-Type

使用方式:

  1. 将网站资源放入 zcMaye/ 目录
  2. 编译运行,服务器监听 80 端口
  3. 在浏览器中访问 http://127.0.0.1

支持的文件类型:

  • .html - text/html
  • .css - text/css
  • .xml - text/xml
  • .png - image/apng
  • .gif - image/gif
  • .jpg/.jpeg - image/jpeg
  • .json - application/json
  • .pdf - application/pdf
  • .exe/.zip/.7z/.gz/.tar - application/octet-stream

CFtp

C 语言实现的 FTP 文件传输系统。

CSmtp

C 语言邮件发送系统。

CHttp 与 CHttp-副本 的差异

对比项 CHttp CHttp-副本
tcpSocket 依赖方式 使用外部静态库 TcpSocket.lib 内置 tcpSocket.ctcpSocket.h 源码
main.c 链接方式 通过 #pragma comment(lib,"TcpSocket.lib") 链接 无需外部库,直接编译
解决方案文件 无独立 sln,依赖 NetWork.sln 有独立的 CHttp.sln
代码内容 CHttp.cCHttp.hmain.c CHttp.cCHttp.hmain.ctcpSocket.ctcpSocket.h
include 方式 #include<tcpSocket.h>(尖括号,系统路径搜索) #include"tcpSocket.h"(双引号,当前目录搜索)
编译前提 需先编译 tcpSocket 项目生成静态库 可独立编译,无需其他项目
适用场景 正式开发,便于维护和复用 独立部署,无需依赖其他项目

技术架构

数据流

浏览器请求 → Socket 接收 → HTTP 解析 → 文件查找 → HTTP 响应 → Socket 发送
     ↓            ↓             ↓            ↓             ↓            ↓
  TCP连接     readLine()    getMothedAndUrl()  stat()     headers()    send()
                                   ↓
                            accept_request()

核心流程

  1. 服务器初始化:调用 init_Socket() 初始化网络库
  2. 创建监听:调用 create_serverSocket(80) 在 80 端口监听
  3. 接收连接:循环调用 accept() 接收客户端连接
  4. 处理请求:调用 accept_request() 解析 HTTP 请求并响应
  5. 发送响应:通过 headers()send_file() 发送 HTTP 响应

开发说明

添加新的文件类型支持

CHttp.cgetConentType() 函数中添加新的文件后缀判断:

else if (stricmp(beg, ".your_ext") == 0)
{
    return "content/type";
}

自定义网站目录

修改 CHttp.caccept_request() 函数中的 resPath 变量:

char resPath[128] = "./your_directory";

注意事项

  1. 端口占用:确保 80 端口未被其他程序占用
  2. 资源路径:网站资源必须放在 zcMaye/ 目录下
  3. 文件权限:确保程序有读取文件的权限
  4. 内存管理:当前实现未使用线程池,并发性能有限

许可证

MIT License

About

C/C++各种网络小程序

Resources

Stars

Watchers

Forks

Releases

Packages

Used by

Contributors

Languages