当前位置: 首页 > news >正文

深入理解计算机系统 CSAPP 家庭作业11.10

A:

//home.html
<form action="/cgi-bin/adder" method="GET"><ul><li><label for="n1">n1:</label><input type="text" id="n1" name="n1" /> //name的值决定页面提交后,生成的地址。</li><li><label for="n2">n2:</label><input type="text" id="n2" name="n2" /> //name的值决定页面提交后,生成的地址。</li><li class="button"><button type="submit">Send</button></li></ul>
</form>

 home.html放在根目录.那样访问127.0.0.1:XX的时候会直接跳转到这个提交数据的页面.

html文件中的name决定用户点击Send按钮后跳转的地址后的参数名.

//adder.c
#include "csapp.h"int main(void) {char *buf, *p;char arg1[MAXLINE], arg2[MAXLINE], content[MAXLINE];int n1=0, n2=0;/* Extract the two arguments */if ((buf = getenv("QUERY_STRING")) != NULL) {p = strchr(buf, '&');*p = '\0';sscanf(buf,"n1=%d",&n1); 	//此处决定读取地址的格式sscanf(p+1,"n2=%d",&n2);    //此处决定读取地址的格式}/* Make the response body */sprintf(content, "Welcome to add.com: ");sprintf(content, "%sTHE Internet addition portal.\r\n<p>", content);sprintf(content, "%sThe answer is: %d + %d = %d\r\n<p>", content, n1, n2, n1 + n2);sprintf(content, "%sThanks for visiting!\r\n", content);/* Generate the HTTP response */printf("Connection: close\r\n");printf("Content-length: %d\r\n", (int)strlen(content));printf("Content-type: text/html\r\n\r\n");printf("%s", content);fflush(stdout);exit(0);
}

adder.c文件中的sscanf中的按格式输入是"n1=%d",这里是和html文件对应的.  .adder程序是从html文件生成的地址中读取变量的.

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 【资料分享】2024钉钉杯大数据挑战赛A题思路解析+代码演示
  • vue 当前页面刷新 provide + inject
  • pytorch backbone
  • 代理协议解析:如何根据需求选择HTTP、HTTPS或SOCKS5?
  • Win11+Anaconda+VScode:mmpose环境配置与基本使用
  • Springboot @Validate @Valid 基于复杂嵌套对象的参数校验示例
  • SQL 基础知识
  • Springboot 多数据源事务
  • 代码随想录算法训练营day22 | 77. 组合、216.组合总和III 、17.电话号码的字母组合
  • kettle从入门到精通 第八十一课 ETL之kettle kettle中的json对象字段写入postgresql中的json字段正确姿势
  • CTF之网站被黑
  • Unity 之 【Android Unity 共享纹理】之 Android 共享图片给 Unity 显示
  • 大厂面经:滴滴大数据面试题及参考答案(3万字长文)
  • 返回倒数第 k 个节点 - 力扣(LeetCode)C语言
  • 记录|博图中VB脚本和子程序之间的区别?
  • JavaScript-如何实现克隆(clone)函数
  • 【翻译】babel对TC39装饰器草案的实现
  • Android开源项目规范总结
  • IOS评论框不贴底(ios12新bug)
  • JavaScript异步流程控制的前世今生
  • nodejs调试方法
  • Phpstorm怎样批量删除空行?
  • react-core-image-upload 一款轻量级图片上传裁剪插件
  • SQLServer之索引简介
  • vue.js框架原理浅析
  • 分布式熔断降级平台aegis
  • 前端js -- this指向总结。
  • 深度学习中的信息论知识详解
  • 手写一个CommonJS打包工具(一)
  • 微信小程序:实现悬浮返回和分享按钮
  • 一加3T解锁OEM、刷入TWRP、第三方ROM以及ROOT
  • 用简单代码看卷积组块发展
  • mysql面试题分组并合并列
  • 格斗健身潮牌24KiCK获近千万Pre-A轮融资,用户留存高达9个月 ...
  • ​ 轻量应用服务器:亚马逊云科技打造全球领先的云计算解决方案
  • #if等命令的学习
  • #Linux杂记--将Python3的源码编译为.so文件方法与Linux环境下的交叉编译方法
  • $(this) 和 this 关键字在 jQuery 中有何不同?
  • (02)Hive SQL编译成MapReduce任务的过程
  • (06)金属布线——为半导体注入生命的连接
  • (Matlab)使用竞争神经网络实现数据聚类
  • (补)B+树一些思想
  • (二)测试工具
  • (二十五)admin-boot项目之集成消息队列Rabbitmq
  • (附源码)ssm码农论坛 毕业设计 231126
  • (论文阅读11/100)Fast R-CNN
  • (全部习题答案)研究生英语读写教程基础级教师用书PDF|| 研究生英语读写教程提高级教师用书PDF
  • (三)Kafka离线安装 - ZooKeeper开机自启
  • (四)七种元启发算法(DBO、LO、SWO、COA、LSO、KOA、GRO)求解无人机路径规划MATLAB
  • (图)IntelliTrace Tools 跟踪云端程序
  • (限时免费)震惊!流落人间的haproxy宝典被找到了!一切玄妙尽在此处!
  • (自用)learnOpenGL学习总结-高级OpenGL-抗锯齿
  • .halo勒索病毒解密方法|勒索病毒解决|勒索病毒恢复|数据库修复
  • .NET / MSBuild 扩展编译时什么时候用 BeforeTargets / AfterTargets 什么时候用 DependsOnTargets?
  • .Net 4.0并行库实用性演练