web服务器

简单的面向对象-web服务器

百般思念 提交于 2019-11-27 16:55:13
import socket import re import multiprocessing class WSGIServer(object): def __init__(self): # 创建套接字 self.tcp_server_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM) self.tcp_server_socket.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1) # 绑定 self.tcp_server_socket.bind(('', 7890)) # 监听套接字 self.tcp_server_socket.listen(128) def service_client(self, new_socket): # 接收浏览器发送过来的请求 request = new_socket.recv(1024).decode('utf8') request_line = request.splitlines() print("") print(">" * 20) print(request_line) file_name = "" ret = re.match(r'[^/]+(/[^ ]*)', request_line[0]) if ret: file

与HTTP协作的Web服务器

佐手、 提交于 2019-11-27 15:42:42
用单台虚拟主机实现多个域名 HTTP/1.1规范允许一台HTTP服务器搭建多个Web站点。这是因为利用了虚拟主机(Virtual Host,又称虚拟服务器)的功能 即使物理层面只有一台服务器,但只要使用虚拟主机的功能,则可以假想已具有多台服务器。 当一台服务器内托管了多个域名,当收到请求时就需要弄清楚究竟要访问哪个域名。 在相同的IP地址下,由于虚拟主机可以寄存多个不同主机名和域名的网站,因此在发送HTTP请求时,必须在Host首部内完整指定主机名或域名的URI。 通信数据转发程序:代理、网关、隧道 HTTP通信时,除客户端和服务器以外,还有一些用于通信数据转发的应用程序,例如代理、网关和隧道。它们可以配合服务器工作。 代理: 代理是一种有转发功能的应用程序,它扮演了位于服务器和客户端”中间人“的角色,接收由客户端发送的请求并转发给服务器,同时也接收服务器返回的响应并转发给客户端。 网关: 网关是转发其他服务器通信数据的服务器,接收从客户端发送过来的请求时,它就像自己拥有资源的源服务器一样对请求进行处理。 隧道: 隧道是在相隔甚远的客户端和服务器两者之间进行中转,并保持双方通信连接的应用程序。 代理: 代理服务器的基本行为就是接受客户端发送的请求后转发给其他服务器。代理不改变请求URI,会直接发送给前方持有资源的目标服务器。 在HTTP通信过程中,可级联多台代理服务器

21servlet简介

橙三吉。 提交于 2019-11-27 15:24:11
servlet servlet简介 这是一段文字 Java Servlet 是运行在 Web 服务器或应用服务器上的程序,它是作为来自 Web 浏览器或其他 HTTP 客户端的请求和 HTTP 服务器上的数据库或应用程序之间的中间层。 使用 Servlet,您可以收集来自网页表单的用户输入,呈现来自数据库或者其他源的记录,还可以动态创建网页。 Java Servlet 通常情况下与使用 CGI(Common Gateway Interface,公共网关接口)实现的程序可以达到异曲同工的效果。但是相比于 CGI,Servlet 有以下几点优势: 性能明显更好。 Servlet 在 Web 服务器的地址空间内执行。这样它就没有必要再创建一个单独的进程来处理每个客户端请求。 Servlet 是独立于平台的,因为它们是用 Java 编写的。 服务器上的 Java 安全管理器执行了一系列限制,以保护服务器计算机上的资源。因此,Servlet 是可信的。 Java 类库的全部功能对 Servlet 来说都是可用的。它可以通过 sockets 和 RMI 机制与 applets、数据库或其他软件进行交互。 servlet包 Java Servlet 是运行在带有支持 Java Servlet 规范的解释器的 web 服务器上的 Java 类。 Servlet 可以使用 javax.servlet

Apache与Tomcat有什么关系和区别

与世无争的帅哥 提交于 2019-11-27 15:09:55
转载地址: https://www.cnblogs.com/zangdalei/p/8057325.html Apache与Tomcat有什么关系和区别 Apache 和 Tomcat 都是web网络服务器,两者既有联系又有区别,在进行HTML、PHP、JSP、Perl等开发过程中,需要准确掌握其各自特点,选择最佳的服务器配置。   Apache是web服务器(静态解析,如HTML),tomcat是java应用服务器(动态解析,如JSP)   Tomcat只是一个servlet(jsp也翻译成servlet)容器,可以认为是apache的扩展,但是可以独立于apache运行 两者从以下几点可以比较的:   1、两者都是apache组织开发的   2、两者都有HTTP服务的功能   3、两者都是开源免费的 联系   1)Apache是普通服务器,本身只支持html即普通网页,可以通过插件支持php,还可以与Tomcat连通(Apache单向连接Tomcat,就是说通过Apache可以访问Tomcat资源,反之不然)。     2)Apache只支持静态网页,但像Jsp动态网页就需要Tomcat来处理。   3)Apache和Tomcat整合使用:     如果客户端请求的是静态页面,则只需要Apache服务器响应请求;     如果客户端请求动态页面,则是Tomcat服务器响应请求

web服务器

喜夏-厌秋 提交于 2019-11-27 12:42:46
Web服务器一般指网站服务器,WEB服务器也称为WWW(WORLD WIDE WEB)服务器,是指驻留于因特网上某种类型计算机的程序,可以向浏览器等Web客户端提供文档,也可以放置网站文件,让全世界浏览;可以放置数据文件,让全世界下载。目前最主流的三个Web服务器是Apache、 Nginx 、IIS。 HTML CSS PHP WEB服务器类型: Apache也被叫做httpd服务器,是目前使用最广泛的web服务器 优点:小巧,灵活,可扩展,稳定。 缺点:软件开源,所以很多的漏洞可能很容易被人查找到。 Nginx是Linux平台下的优秀Web服务器。 优点:压缩率高,支持负载均衡,速度快 缺点:需要掌握熟练的Linux命令才能应用 IIS是微软平台的Web服务器,是针对Windows平台的服务器。它和NET语言非常的搭配,新手掌握起来也比较快。 优点:安装配置简单,学习起来容易 缺点:平台适用性单一,安全性有待提高 WebLogic是专门应用于企业级开发的web服务器,比较常见的是和Java语言搭配。 优点:安全性高,专业性强,耦合度低 缺点:不容易掌握,需要有一定的专业积累才能熟练应用 Tomcat是很多Java学习者都非常熟悉的web服务器,一般刚开始学习Java Web开发的人都会使用Tomcat作为服务器进行练习。 优点:简单易掌握,部署容易,应用广泛 缺点:扩展性不强

云计算openstack共享组件——Memcache 缓存系统(4)

丶灬走出姿态 提交于 2019-11-27 12:35:34
云计算openstack共享组件——Memcache 缓存系统(4) 一、缓存系统 一、静态web页面: 1、在静态Web程序中,客户端使用Web浏览器(IE、FireFox等)经过网络(Network)连接到服务器上,使用HTTP协议发起一个请求(Request),告诉服务器我现在需要得到哪个页面,所有的请求交给Web服务器,之后WEB服务器根据用户的需要,从文件系统(存放了所有静态页面的磁盘)取出内容。之后通过Web服务器返回给客户端,客户端接收到内容之后经过浏览器渲染解析,得到显示的效果。 2、为了让静态web页面显示更加好看,使用javascript/VBScript/ajax(AJAX即“Asynchronous Javascript And XML”(异步JavaScript和XML),是指一种创建交互式网页应用的网页开发技术。)但是这些特效都是在客户端上借助于浏览器展现给用户的,所以在服务器上本身并没有任何的变化。 3、静态web无法连接数据库; 4、静态web资源开发技术:HTML; 5、由于现在的web页面中,大量使用JS,导致浏览器打开页面,就会占用大量的内存,服务端的压力是减轻了,但压力转移到了客户端。 二、动态web页面: 1、动态WEB中,程序依然使用客户端和服务端,客户端依然使用浏览器(IE、FireFox等),通过网络(Network)连接到服务器上

Python四大主流Web编程框架

余生颓废 提交于 2019-11-27 12:09:25
Python四大主流Web编程框架 作者:陈秋歌 https://blog.csdn.net/chenqiuge1984/article/details/80127498 本文内容摘录自《 Python高效开发实战——Django、Tornado、Flask、Twisted 》一书。该书分为三部分:第1部分是基础篇,带领初学者实践Python开发环境和掌握基本语法,同时对网络协议、Web客户端技术、数据库建模编程等网络编程基础深入浅出地进行学习;第2部分是框架篇,学习当前最流行的Python Web框架,即Django、Tornado、Flask和Twisted,达到对各种Python网络技术融会贯通的目的;第3部分是实战篇,分别对4种框架进行项目实践,利用其各自的特点开发适用于不同场景的网络程序。 目前Python的网络编程框架已经多达几十个,逐个学习它们显然不现实。但这些框架在系统架构和运行环境中有很多共通之处,本文带领读者学习基于Python网络框架开发的常用知识,及目前的4种主流Python网络框架:Django、Tornado、Flask、Twisted。 网络框架及MVC架构 所谓网络框架是指这样的一组Python包,它能够使开发者专注于网站应用业务逻辑的开发,而无须处理网络应用底层的协议、线程、进程等方面。这样能大大提高开发者的工作效率,同时提高网络应用程序的质量。

Java Web学习(一)Web基础

时光毁灭记忆、已成空白 提交于 2019-11-27 11:15:19
本文借鉴: 孤傲苍狼 (特此感谢!) 一、基本概念 web资源 Internet上供外界访问的Web资源分为两种: 静态web资源(如html 页面): 指web页面中供人们浏览的数据始终是不变。 动态web资源: 指web页面中供人们浏览的数据是由程序产生的,不同时间点访问web页面看到的内容各不相同 。 PS: 动态web资源开发时使用Java进行数据渲染的技术统称为 Javaweb 。 web应用 定义: 多个web资源用于对外提供服务时,把它们放在一个目录中,这就组成一了个web应用(或web应用程序) web类型    (1) 静态web 流程图: 缺点: Web页面中的内容无法动态更新。 无法连接数据库。 (2) 动态web 流程图: 二、WEB服务器 定义: 一种被动程序,可以向发出请求的浏览器提供文档,但只有浏览器发出请求时,服务器才会响应。 三、tomcat(web服务器) PS: tomcat的安装与配置此处省略 结构 配置文件 路径:conf/ server.xml 浏览器与服务器交互过程 如图,在浏览器的地址栏中输入URL地址"http://www.gacl.cn:8080/JavaWebDemo1/1.jsp"去访问服务器上的1.jsp这个web资源的过程中,浏览器和服务器做了以下几个操作:   1、 浏览器根据主机名"www.gacl.cn

Kestrel服务器

蓝咒 提交于 2019-11-27 09:47:03
阅读目录 Kestrel服务器 什么是Kestrel服务器 回到目录 Kestrel服务器 回到目录 什么是Kestrel服务器 Kestrel是开源的( GitHub 提供的源代码),事件驱动的异步I / O服务器,用于在任何平台上托管ASP.NET应用程序。这是一个监听服务器和一个命令行界面。您将侦听服务器安装在Windows或Linux服务器上,并在计算机上安装命令行界面(安装.netcore会自动一整套安装)。(Kestrel发音: ['kestr(ə)l] ) 它是与ASP.NET Core一起由微软推出的。所有ASP.NET Core应用程序都使用新的MVC框架和Kestrel Web服务器。这些新的应用程序可以运行在完整的.NET Framework或.NET Core上。 Kestrel Web服务器的概述 Kestrel被认为是较新的ASP.NET应用程序的首选Web服务器(请参阅这篇文章与IIS比较, why you need both )。它j机遇 libuv library ,与node.js使用的 库 相同。Libuv支持事件驱动的编程风格。它的一些核心工具包括: 非阻塞网络支持 异步文件系统访问 计时器 子进程 它允许ASP.NET Core应用程序在其他跨平台的Web服务器(如Jexus,Nginx和Apache)上轻松运行,而无需解决不同的启动配置

Python 简单web服务器的实现

可紊 提交于 2019-11-27 08:38:07
import re import socket def service_cilent(new_socket): request = new_socket.recv(1024).decode("utf-8") # Python splitlines() 按照行('\r', '\r\n', \n')分隔,返回一个包含各行作为元素的列表,如果参数 keepends 为 False,不包含换行符,如果为 True,则保留换行符。 request_lines = request.splitlines() print(request_lines) file_name = "" ret = re.match(r"[^/]+(/[^ ]*)", request_lines[0]) if ret: file_name = ret.group(1) if file_name == "/": file_name = "index.html" try: f = open(file_name, "rb") except: response = "HTTP/1.1 404 NOT FOUND\r\n\r\n" response += "------file not found-----" new_socket.send(response.encode("utf-8")) else: # 打开文件成功就读文件