深远精通Computer种类

作者: 金沙澳门官网网址  发布:2019-08-07

  如今学习到了《深入掌握计算机连串》的第11章网络编制程序,在最后一节是二个名称为Tiny的小型web服务器的落到实处,源代码书中早已提交,这里就不再复制粘贴了。那篇小博客首要记录一下课后题10的解答。原标题为:
     写出CGI adder函数的HTML表单。你的表单应该富含多个文本框,用户将要求相加的两个数字填在那多少个文本框中。你的表单应该运用GET方法央浼内容。
     因为自身在此以前没接触过HTML表单,先百度之,找到了w3school的HTML教材,看了弹指间表单的一部分,写出了三个很轻巧的小表单,命名叫index.html:

 1 <!DOCTYPE html>
 2 <html>
 3 <body>
 4 
 5 <p>
 6 please enter two numbers:<br>
 7 </p>
 8 
 9 <form action="/cgi-bin/adder">
10   The first number:
11   <input type="number" name="num1"> <br>
12   The second number:
13   <input type="number" name="num2"> <br>
14   <input type="submit" value="Submit">
15 </form>
16 
17 </body>
18 </html>

  那是输入localhost:8888过后浏览器展现的效果与利益图。8888是自个儿设置的tiny的端口,至于缘何一向不前边的/index.html,是因为笔者在源代码军长index.html设为了主分界面。

图片 1

  大家能够不管道输送入三个数字,点击Submit按键,结果一定是畸形的。。

图片 2

  如上海体育场面所示,结果展现的是0。注意在该网页的地址栏处,我们看来"localhost:8888/cgi-bin/adder?num1=22&num2=22",看过tiny源码大家就能够分晓,adder.c所要深入分析的多少是在&符号两边的纯数字,也正是说,要想正确的被adder.c程序求和,地址栏应该出示"localhost:8888/cgi-bin/adder?22&22"才对。出现上海体育场面中的错误的来头正是,adder程序未有获得多少个参数的数值大小。解决情势相当粗略,只供给在adder.c程序里把五个数字抽取来就行了,整个adder.c代码如下所示:

 1 #include "net.h"
 2 
 3 int main(void)
 4 {
 5     char *buf, *p;
 6     char arg1[MAXLINE], arg2[MAXLINE], content[MAXLINE];
 7     char tmp[MAXLINE];
 8     int n1 = 0, n2 = 0;
 9 
10     if ( (buf = getenv("QUERY_STRING")) != NULL) {
11         p = strchr(buf, '&');
12         *p = '\0';
13 
14         strcpy(arg1, buf);
15         strcpy(arg2, p 1);
16 
17         //用来取出两个参数的代码
18         p = strchr(arg1, '=');
19         strcpy(arg1, p 1);
20         p = strchr(arg2, '=');
21         strcpy(arg2, p 1);
22 
23         n1 = atoi(arg1);
24         n2 = atoi(arg2);
25     }
26 
27     sprintf(content, "QUERY_STRING = %s", buf);
28     sprintf(content, "Welcome to add.com: ");
29     //sprintf(content, "arg1=%s, arg2=%sn", arg1, arg2);  调试输出参数
30     sprintf(content, "%sThe Internet addition portal.rn<p>", content);
31     sprintf(content, "%sThe answer is: %d   %d = %drn<p>",
32             content, n1, n2, n1   n2);
33     sprintf(content, "%sThanks for visiting!rn", content);
34 
35     //generate the http response
36     printf("Connection: closern");
37     printf("Content-length: %drn", (int)strlen(content));
38     printf("Content-type: text/htmlrnrn");
39     printf("%s", content);
40     fflush(stdout);
41 
42     exit(0);
43 }

  重新编写翻译adder.c之后,大家再度在浏览器输入网站:localhost:8888,输入多少个数字,结果如图:

图片 3

  至此,大家学习Tiny的第一阶段就是实现了,完毕了课后题11.10的渴求,能够管理来自浏览器的静态诉求和动态央求。然而,由于我们的Tiny一回只可以管理一个一而再,功效太低了。下一节我们就要对Tiny举办一下更进一竿,使其可以协助并发管理。

本文由金沙澳门官网发布于金沙澳门官网网址,转载请注明出处:深远精通Computer种类

关键词: 金沙澳门官网