#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服务器内容的更多相关文章

  1. sqlserver查询分析器在本地服务器查看其它SqlServer服务器内容

    exec sp_addlinkedserver 服务器自命名,'',sqloledb,要查询服务器的IP地址 exec sp_addlinkedsrvlogin 服务器自命名,false,null,账 ...

  2. 和HTTP相关的web服务器内容

    一台web服务器可以搭建多个独立域名的网站,也可以作为通信路径上的中转服务器提升传输效率. 1. 用单台虚拟主机实现多个域名 多个域名解析后对应的ip地址相同,需要在Host首部中包含完整的主机名或者 ...

  3. MVC4 项目迁移 服务器被配置为不列出此目录的内容

    前言: 将服务器中已经发布在IIS7上的网站,迁移到虚拟机中. 方便以后出现问题了,可以在自己的虚拟机中做测试提高工作效率. 问题: 迁移的6个MVC项目中有俩个碰到如下问题. 应用程序"T ...

  4. 【转】《从入门到精通云服务器》第七讲—负载均衡和CDN技术

    在IDC知识中,我们常常会遇上负载均衡与CDN的概念而不知所云.第一讲[什么是云计算], 我们提到过负载均衡,仅给大家留下了印象.这次我们将深入浅出的讲讲到底什么是负载均衡与CDN技术.---互联网数 ...

  5. 常见的web容器与应用程序服务器区别及对比

    tomcat 类型:servlet容器和HTTP web服务器 功能:实现了一些J2EE特性包括Java Servlet.JSP页面.Java EL和websocket,还有纯java的http we ...

  6. Web服务器的工作原理

    Web服务器的工作原理 Web服务器工作原理概述 很多时候我们都想知道,web容器或web服务器(比如Tomcat或者jboss)是怎样工作的?它们是怎样处理来自全世界的http请求的?它们在幕后做了 ...

  7. web服务器工作原理

    Web服务器工作原理概述 转载自http://www.importnew.com/15020.html 很多时候我们都想知道,web容器或web服务器(比如Tomcat或者jboss)是怎样工作的?它 ...

  8. Asp.net 服务器Application,Session,Cookie,ViewState和Cache区别

    2.8 Context 的使用Context 对象包含与当前页面相关的信息,提供对整个上下文的访问,包括请求.响应.以及上文中的Session 和Application 等信息.可以使用此对象在网页之 ...

  9. 一文看懂web服务器、应用服务器、web容器、反向代理服务器区别与联系

    我们知道,不同肤色的人外貌差别很大,而双胞胎的辨识很难.有意思的是Web服务器/Web容器/Web应用程序服务器/反向代理有点像四胞胎,在网络上经常一起出现.本文将带读者对这四个相似概念如何区分. 1 ...

随机推荐

  1. EntityFramework中常用的数据删除方式

    最近在学EF,目前了解到删除操作有三种方式, 第一,官方推荐的先查询数据,再根据查询的对象,删除对象. 这是第一种,官方推荐 第二,自己创建一个对象,然后附加,然后删除. 这是第二种 第三,自己创建对 ...

  2. 绝对精品推荐做前端的看下:Web前端开发体会十日谈

    20151208感悟: 前端人的角度来看的话,感觉像是阅读一个大牛前端的全部武功的一个秘籍说明,里面的思想高价值蛋白真是太多太多,推荐看. Web前端开发体会十日谈 一直想写这篇“十日谈”,聊聊我对W ...

  3. SSD卡对mongodb的影响

    结论 1:SSD卡显著改善磁盘IO,io占用在50%以下 2:SSD卡使mongodb性能稳定.在200并发,数据量是内存5倍的情况下仍然保证每秒1500次插入和4500次查询.     数据如下: ...

  4. 一起SQL引发OOM的解决思路与过程(转载)

    在TOMCAT WEB程序的运行过程中,突然触发了内存溢出错误,检查Tomcat的localhost日志,找到如下信息: java.lang.OutOfMemoryError: Java heap s ...

  5. openssl - 怎么打开POD格式的帮助文件

    原文链接: http://zhidao.baidu.com/link?url=47I6A0YGA9FnK6galKZ5sxPSZzFGRdng2qhACb4ToBuhuyMhdrwcYpZmNI28y ...

  6. SNF快速开发平台MVC-表格单元格合并组件

    1.   表格单元格合并组件 1.1.      效果展示 1.1.1.    页面展现表格合并单元格 图 4.1 1.1.2.    导出excel合并单元格 图 4.2 1.2.      调用说 ...

  7. texlive测试是否安装成功

    在完成TEX Live安装之后,自然你会希望试试看它是否正常工作,好让你在以后能够创建优美的文档和字体. 1.首先确认你可以执行tex程序: >tex --version TeX 3.14159 ...

  8. 将自己写的HDL代码封装成带AXI总线的IP

    将自己写的HDL代码封装成带AXI总线的IP 1.Tools->create and package IP 2.create AXI4总线的IP 3.新建block design 4.点击右键, ...

  9. [svc]tomcat配置文件详解-最简单的基于mvn的war包

    tomcat安全管理规范 java&tomcat配置参考(多看看这位大牛的博客,写的很好) Tomcat系列之Java技术详解 http://blog.51cto.com/freeloda/1 ...

  10. 【Linux】深入理解Linux中内存管理

    主题:Linux内存管理中的分段和分页技术 回顾一下历史,在早期的计算机中,程序是直接运行在物理内存上的.换句话说,就是程序在运行的过程中访问的都是物理地址. 如果这个系统只运行一个程序,那么只要这个 ...