1. TinyWeb服务器
-
Tiny是一个迭代服务器,实现了get方法。
-
监听在命令行中确定的端口上的连接请求,通过open_listenedfd函数打开一个监听套接字以后,Tiny执行典型的无限服务循环,反复地接受一个连接(accept)请求,执行事务(doit),最后关闭连接描述符(close)
-
工作过程
-
创建listenfd,开始监听
-
accept连接,开始服务
-
读取第一行,获取到方法,uri,版本号。忽略所有首部
-
根据方法开始服务,只服务GET方法。
-
判断uri中是否有query,如果有就执行cgi程序,没有就发送文件。
-
填写回送首部,然后发送cgi程序结果或者文件。
-
完成一次HTTP服务。
2. 将本地文件通过终端上传到linux服务器
-
scp -P 端口 c://xxxx.txt user@ip:/home/root
-
like: scp -r localfile.txt username@ip address:/home/username/
- scp是命令,-r是参数
- localfile.txt 是文件的路径和文件名
- username是服务器账号
- ip address是要上传的服务器ip地址
- /home/username/是要拷入的文件夹路径
3.搭建过程
CSAPP代码位于CSAPP
-
在目录下放进csapp.h csapp.c tiny.c 和cgi-bin/adder.c
gcc -O1 tiny.c csapp.c -o tiny -
此时会提示未定义pthread_*、sem_*,而查看库文件下是有的,但是处于外部链接状态,被放在了共享库中,需执行
gcc -O1 tiny.c csapp.c -o tiny -lpthread //编译生成tiny可执行文件 -
编译生成tiny可执行文件,再进入cgi-bin目录下
gcc -O1 adder.c -o adder -I../ //编译生成adder可执行文件 -
在目录下执行tiny
./tiny 2000 //2000表示通信端口 -
主机上输入
curl http://localhost:2000/cgi-bin/adder?1&1