# Socket Lab **Repository Path**: shmoo/socket-lab ## Basic Information - **Project Name**: Socket Lab - **Description**: TJU Computer Network course socket lab - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 2 - **Created**: 2024-05-15 - **Last Updated**: 2024-05-15 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # Socket Lab ## 介绍 TJU Computer Network course socket lab ### 基础代码目录说明 1. 网络客户端和服务器代码 .../echo_client.c - 简单的回声网络客户端。这个程序负责向服务器发送数据,并接收服务器返回的相同数据。 .../echo_server.c - 简单的回声网络服务器。它监听来自客户端的连接请求,接收客户端发送的数据,并将相同的数据回传给客户端。 2. 编译规则文件 .../Makefile - 包含用于构建项目的make规则。这个文件定义了如何编译和链接客户端和服务器程序,以及如何清理编译生成的文件。 3. 示例驱动和解析器代码 .../example.c - 示例驱动程序,用于演示如何调用和使用解析器。 .../lexer.l - 包含Lex/Yacc相关的逻辑,用于词法分析。 .../parse.y - Yacc文件,用于定义语法分析的规则。 .../parse.c - 生成的解析器代码,通常由Yacc工具从parse.y文件自动生成。 .../parse.h - 解析器的头文件,包含了解析器函数和数据结构的声明,供其他程序模块调用。 4. 示例HTTP请求 .../sample_request_simple - 包含简单的HTTP请求示例。这可以用来测试网络程序处理HTTP请求的能力。 .../sample_request_realistic - 包含更为真实的HTTP请求示例。这些示例更加复杂,可能包含多种HTTP头部和更长的请求体 ### 项目要求 #### 第一周要求: 搭建编程环境 学习分词方法lex和yacc 实现简单的echo web server: Server收到client的带多请求行的消息后,能够正确解析出来,并且返回响应消息(response message)。分以下3种情况处理: >- Echo: 如果收到客户端发来的是GET, HEAD和POST方法,则echo回去,即重新封装(encapsulation)消息并返回给客户端。 >- 没实现:如果收到客户端发来的是除GET, HEAD和POST以外的其它方法,服务器并没有实现,则需要返回响应消息“HTTP/1.1 501 Not Implemented\r\n\r\n”。 >- 格式错误:如果收到的客户端消息的格式错误,应能够识别出来,并返回错误代码为400的HTTP响应消息“HTTP/1.1 400 Bad request\r\n\r\n”。 #### 第二周要求 ...... ### 时间节点 - 5月15日:项目启动 - 5月26日: 提交第1周进度报告。 - 6月2日:提交第2周进度报告。 - 6月9日:提交第3周进度报告。 - 6月16日:提交第4周进度报告。 - 6月23日: 提交实验报告和最终源码。 ### TODO List * 第一周 >1. 修改echo_server.c:接收到消息后需并解析后需按要求响应 >2. 修改echo_client.c:将输入参数修改为文件形式(done) >3. 修改parse.c、parse.y:能够利用lex和yacc正确解析消息 * 第二周...... ### 参与贡献 1. Fork 本仓库 2. 新建 Feat_xxx 分支 3. 提交代码 4. 新建 Pull Request