6.18_web服务器内容
#coding:utf-8
'''
2018-6-18 14:47:23
创建一个静态服务器访问指定页面 http://127.0.0.1:8000/
'''
import socket from multiprocessing import Process HTML_ROOT_DIR = "" def handle_client(client_socket):
''' 处理客户端请求'''
# 获取客户端请求数据
request_data = client_socket.recv(1024)
print("request_data:",request_data) # 构造相应数据
response_start_line = "HTTP/1.1 200 OK\r\n"
response_headers = "Sever:My server\r\n"
response_body = "hello itcast"
response = response_start_line+response_headers+"\r\n"+response_body
print("response data:",response)
# 向客户端返回响应数据
client_socket.send(bytes(reponse,"utf-8")) # 关闭客户端连接
client_socket.close() def main():
#tcp socket 服务端
server_socket = socket.socket(socket.AF_INET,socket.SOCK_STREAM)
server_socket.bind(("",8003))
server_socket.listen(128) while True:
client_socket,client_address = server_socket.accept()
print("")
#创建一个进程
handle_client_process = Process(target=handle_client,args=(client_socket,))
handle_client_process.start()
client_socket.close() if __name__ == '__main__':
main()
#coding:utf-8
'''
2018-6-18 18:05:41
创建一个静态服务器访问指定页面 http://127.0.0.1:8000/index.html
'''
import socket
import re
from multiprocessing import Process # 设置静态文件根目录 常量全大写
HTML_ROOT_DIR = "./html" def handle_client(client_socket):
''' 处理客户端请求'''
# 获取客户端请求数据
request_data = client_socket.recv(1024)
print("request_data:",request_data)
request_lines = request_data.splitines()
for line in request_lines:
print(line) #解析请求报文
# 'GET?HTTP/1.1'
request_start_line = request_lines[0]
# 使用正则,拿到 index.html
file_name = re.match(r"\w+ +(/[^ ]*) ",request_start_line.decode(utf-8)).group(1) # 判断反过来写,防止少写一个等号 不可变的写在左边
if "/" == file_name:
file_name ="/index.html" # 打开文件,读取内容
try:
file = open(HTML_ROOT_DIR+file_name,"rb")
except IOError:
response_start_line ="HTTP/1.1 404 NOt Found\r\n"
response_headers = "server: My Sever\r\n"
response_body = "The file is not found!"
else:
file_data = file.read().decode("utf-8")
file.close()
# 构造相应数据
response_start_line = "HTTP/1.1 200 OK\r\n"
response_headers = "Sever:My server\r\n"
response_body = file_data
finally:
response = response_start_line+response_headers+"\r\n"+response_body
print("response data:",response) # 向客户端返回响应数据 python3需要转换成字节
client_socket.send(bytes(reponse,"utf-8")) # 关闭客户端连接
client_socket.close() def main():
#tcp socket 服务端
server_socket = socket.socket(socket.AF_INET,socket.SOCK_STREAM)
#设置socket参数
server_socket.setsockopt(socket.SOL_SOCKET,socket.SOL_REUSEADDR,1)
server_socket.bind(("",8000))
server_socket.listen(128) while True:
client_socket,client_address = server_socket.accept()
print("")
#创建一个进程
handle_client_process = Process(target=handle_client,args=(client_socket,))
handle_client_process.start()
client_socket.close() if __name__ == '__main__':
main()
6.18_web服务器内容的更多相关文章
- sqlserver查询分析器在本地服务器查看其它SqlServer服务器内容
		
exec sp_addlinkedserver 服务器自命名,'',sqloledb,要查询服务器的IP地址 exec sp_addlinkedsrvlogin 服务器自命名,false,null,账 ...
 - 和HTTP相关的web服务器内容
		
一台web服务器可以搭建多个独立域名的网站,也可以作为通信路径上的中转服务器提升传输效率. 1. 用单台虚拟主机实现多个域名 多个域名解析后对应的ip地址相同,需要在Host首部中包含完整的主机名或者 ...
 - MVC4 项目迁移 服务器被配置为不列出此目录的内容
		
前言: 将服务器中已经发布在IIS7上的网站,迁移到虚拟机中. 方便以后出现问题了,可以在自己的虚拟机中做测试提高工作效率. 问题: 迁移的6个MVC项目中有俩个碰到如下问题. 应用程序"T ...
 - 【转】《从入门到精通云服务器》第七讲—负载均衡和CDN技术
		
在IDC知识中,我们常常会遇上负载均衡与CDN的概念而不知所云.第一讲[什么是云计算], 我们提到过负载均衡,仅给大家留下了印象.这次我们将深入浅出的讲讲到底什么是负载均衡与CDN技术.---互联网数 ...
 - 常见的web容器与应用程序服务器区别及对比
		
tomcat 类型:servlet容器和HTTP web服务器 功能:实现了一些J2EE特性包括Java Servlet.JSP页面.Java EL和websocket,还有纯java的http we ...
 - Web服务器的工作原理
		
Web服务器的工作原理 Web服务器工作原理概述 很多时候我们都想知道,web容器或web服务器(比如Tomcat或者jboss)是怎样工作的?它们是怎样处理来自全世界的http请求的?它们在幕后做了 ...
 - web服务器工作原理
		
Web服务器工作原理概述 转载自http://www.importnew.com/15020.html 很多时候我们都想知道,web容器或web服务器(比如Tomcat或者jboss)是怎样工作的?它 ...
 - Asp.net 服务器Application,Session,Cookie,ViewState和Cache区别
		
2.8 Context 的使用Context 对象包含与当前页面相关的信息,提供对整个上下文的访问,包括请求.响应.以及上文中的Session 和Application 等信息.可以使用此对象在网页之 ...
 - 一文看懂web服务器、应用服务器、web容器、反向代理服务器区别与联系
		
我们知道,不同肤色的人外貌差别很大,而双胞胎的辨识很难.有意思的是Web服务器/Web容器/Web应用程序服务器/反向代理有点像四胞胎,在网络上经常一起出现.本文将带读者对这四个相似概念如何区分. 1 ...
 
随机推荐
- 五花八门的Shell 的相关概念和配置方法
			
使用Linux的过程中少不了使用各种各样的Shell, 而根据启动环境的不同,Shell会读取不同的配置文件. 本文便来详细介绍这些不同名字的配置文件在何时会被Shell读取. 什么是 Shell S ...
 - WIN7系统有些文本乱码怎么办
			
有些文本工具无法编辑中文 打开控制面板,找到语言设置 区域和语言,更改系统区域设置,改成中文,重启
 - 微软BI SSIS 2012 ETL 控件与案例精讲面试 200 问(SSIS 面试题,ETL 面试题)
			
开篇介绍 本自测与面试题出自 微软BI SSIS 2012 ETL 控件与案例精讲 (http://www.hellobi.com/course/21) 课程,对于学完本课程的每一课时和阅读完相关辅助 ...
 - 原创:vsphere概念深入系列二:vSphere交换机命令行查看排错
			
1.如何查看VM的IP Addresses, MAC Addresses, Uplink ports, Port ID,VSS/VDS,portgroup,DVPort Group,vmnic Upl ...
 - 【转】《iOS7 by Tutorials》系列:iOS7的设计精髓(上)
			
简介: 本文翻译自<iOS7 by Tutorials>一书的第一章“Designing for iOS 7”,主要从程序员角度介绍了iOS7的新设计理念,堪称神作!本文翻译仅作学习交流之 ...
 - 开发指南专题五:JEECG微云高速开发平台代码生成器
			
开发指南专题五:JEECG微云高速开发平台代码生成器 1.1. Maven开发环境搭建 在搭建jeecg的maven开发环境之前,须要先配置好本机的maven环境,并在eclipse中安装好m2ecl ...
 - 基于mindwave脑电波进行疲劳检测算法的设计(5)
			
时隔两个多月了,前段时间在弄Socket,就没有弄这个了.现在好了,花了几天的时间,终于又完成了一小部分了.这一小节主要讲α,β,δ,θ等等波段之间的关系.废话不多说,直接给出这几天的成果. 上一次, ...
 - python工具 - 读取文件的部分指定内容并输出到外置窗口
			
一.使用场景 某些配置文件里有一些特定的字符,而这些字符恰巧需要我们采集出来,然后输出到另外一个窗口做展示时,可以使用该工具. 本例的演示则提取配置文件中的[姓名:黄蓉 女 九阴真经.姓名:郭靖 男 ...
 - ORA-03297: 文件包含在请求的 RESIZE 值以外使用的数据
			
本文中的45,对应 修改数据文件大小 里面的45 1.移动表前先对表空间做整理 alter tablespace data_cis_test coalesce; 2.在dba_extents找到与ID ...
 - 【iCore4 双核心板_ARM】例程三:EXTI中断输入实验——读取ARM按键状态
			
实验原理: 按键的一端与STM32的GPIO(PB9)相连,且PB9外接一个1k大小的限流上接电阻. 初始化时把PB9设置成输入模式,当按键弹起时,PB9由于上拉电阻的作用呈高电平(3.3V): 当按 ...