1. TinyWeb服务器

  • Tiny是一个迭代服务器,实现了get方法。

  • 监听在命令行中确定的端口上的连接请求,通过open_listenedfd函数打开一个监听套接字以后,Tiny执行典型的无限服务循环,反复地接受一个连接(accept)请求,执行事务(doit),最后关闭连接描述符(close)

  • 工作过程

  1. 创建listenfd,开始监听

  2. accept连接,开始服务

  3. 读取第一行,获取到方法,uri,版本号。忽略所有首部

  4. 根据方法开始服务,只服务GET方法。

  5. 判断uri中是否有query,如果有就执行cgi程序,没有就发送文件。

  6. 填写回送首部,然后发送cgi程序结果或者文件。

  7. 完成一次HTTP服务。

2. 将本地文件通过终端上传到linux服务器

  • scp -P 端口 c://xxxx.txt user@ip:/home/root

  • like: scp -r localfile.txt username@ip address:/home/username/

  1. scp是命令,-r是参数
  2. localfile.txt 是文件的路径和文件名
  3. username是服务器账号
  4. ip address是要上传的服务器ip地址
  5. /home/username/是要拷入的文件夹路径

3.搭建过程

CSAPP代码位于CSAPP

  1. 在目录下放进csapp.h csapp.c tiny.c 和cgi-bin/adder.c

     gcc -O1 tiny.c csapp.c -o tiny
    
  2. 此时会提示未定义pthread_*、sem_*,而查看库文件下是有的,但是处于外部链接状态,被放在了共享库中,需执行

     gcc -O1 tiny.c csapp.c -o tiny -lpthread     //编译生成tiny可执行文件
    
  3. 编译生成tiny可执行文件,再进入cgi-bin目录下

     gcc -O1 adder.c -o adder -I../   //编译生成adder可执行文件
    
  4. 在目录下执行tiny

     ./tiny 2000      //2000表示通信端口
    
  5. 主机上输入

     curl http://localhost:2000/cgi-bin/adder?1&1