Understanding Unix/Linux Programming 笔记:chapter 12:连接和协议:编写Web服务器
2013-11-12 23:50
866 查看
Key-word: Web服务器
本章要编写的Web服务器是对上章的ls服务器的扩展,扩展了cat文件、运行程序功能。
但如何能使一个服务器接收多个请求,实现不同的功能?用fork实现。
编写建立到服务器的连接的函数:connect_to_server(hostname, portnum),该函数只是将上一章讲的客户端程序流程的前两步合为整体,即:创建一个socket、将该socket连接到服务器,分别对应socket、connect函数调用。
服务器在处理客户端请求时有两种处理方法:1)自己做(DIY);2)代理。
之前讲的所有服务器程序都是自己做,即该进程自己处理。代理指的是创建一个新的进程来处理,可以用fork创建子进程来实现,在子进程中要将子进程的标准输出指向accept时得到的文件描述符,这样才可以通信。
Web服务器就是以上所述内容的综合运用,用fork创建子进程来处理客户端不同的功能请求,有更复杂的通信协议,但基本架构与其他服务器相同。Web服务器完成之后,就可以用Web浏览器来访问Web服务器了。
基本概念:
Web服务器通常具备3种用户操作:列举目录信息、cat文件、运行程序。本章要编写的Web服务器是对上章的ls服务器的扩展,扩展了cat文件、运行程序功能。
但如何能使一个服务器接收多个请求,实现不同的功能?用fork实现。
内容概述:
编写建立服务器端socket的函数:make_server_socket(int portnum),该函数只是将上一章讲的服务器程序流程中的前三步合为整体,即:创建一个socket、给socket绑定一个地址、监听接入请求,分别对应socket、bind、listen函数调用。编写建立到服务器的连接的函数:connect_to_server(hostname, portnum),该函数只是将上一章讲的客户端程序流程的前两步合为整体,即:创建一个socket、将该socket连接到服务器,分别对应socket、connect函数调用。
服务器在处理客户端请求时有两种处理方法:1)自己做(DIY);2)代理。
之前讲的所有服务器程序都是自己做,即该进程自己处理。代理指的是创建一个新的进程来处理,可以用fork创建子进程来实现,在子进程中要将子进程的标准输出指向accept时得到的文件描述符,这样才可以通信。
Web服务器就是以上所述内容的综合运用,用fork创建子进程来处理客户端不同的功能请求,有更复杂的通信协议,但基本架构与其他服务器相同。Web服务器完成之后,就可以用Web浏览器来访问Web服务器了。
相关文章推荐
- Understanding Unix/Linux Programming 笔记:chapter 11:连接到近端或远端的进程:服务器与Socket(套接字)
- Understanding Unix/Linux Programming 笔记:chapter 7:事件驱动编程:编写一个视频游戏
- Understanding Unix/Linux Programming 笔记:chapter 8:进程和程序:编写命令解释器sh
- Understanding Unix/Linux Programming 笔记:chapter 13:基于数据报(Datagram)的编程:编写许可证服务器
- Understanding Unix/Linux Programming note:chapter 5:连接控制:学习stty
- Understanding Unix/Linux Programming 笔记:chapter 9:可编程的shell、shell变量和环境; chapter 10:I/O重定向和管道
- Understanding Unix/Linux Programming 笔记:chapter 15:进程间通信(IPC)
- Understanding Unix/Linux Programming 笔记:chapter 14:线程机制:并发函数的使用
- Understanding Unix/Linux Programming-设备文件与磁盘连接的概念
- Understanding Unix/Linux Programming note:chapter 1:more函数的流程图
- Understanding Unix/Linux Programming note:chapter 1:执行可执行文件时的参数传递
- 第12章 连接和协议:编写Web服务器
- Understanding Unix/Linux Programming-事件驱动编程:编写一个视频游戏
- Understanding Unix/Linux Programming note:chapter 6:为用户编程:终端控制和信号
- Understanding Unix/Linux Programming note:chapter 2, chapter 3, chapter 4
- linux学习笔记——搭建基于nginx的web服务器、多核配置、nginx配置参数
- php7安装redis扩展,linux安装redis扩展——linux安装web服务器12
- linux Web服务器--Boa实验笔记
- SSM项目连接远程Linux服务器的mysql 启动tomcat卡在了 Initializing Spring root WebApplicationContext
- 阿里云服务器连接以及centos 搭建 web java环境(linux java部署 tomcat部署)