Web服务器-服务器开发-返回浏览器需要的页面 (3.3.2)
@
1.说明
使用正则表达式,匹配客户端的请求头
获取到请求的路径
返回对应请求路径的文字
可以使用打开对应文件的方式去返回对应的文件
2.代码
from socket import *
import  re
def service_client(new_socket):
    '''为这个客户端返回数据'''
    # 1.接收浏览器发送过来的请求,即http请求
    #GET /HTTP/1.1
    # ...
    request = new_socket.recv(1024).decode("utf-8")
    request_lines = request.splitlines()
    print(request_lines)
    #GET /index.html HTTP/1.1
    #get post put del
    ret = re.match(r"[^/]+/[^ ]*",request_lines[0])
    file_name = ""
    if ret:
        file_name = ret.group(0)
    #2,返回http格式的数据给浏览器
    #2.1准备发送给浏览器的数据 ---header
    response = "HTTP/1.1 200 OK\r\n"#正常浏览器\r\n代表的是换行
    response += "\r\n"
    #2.2准备发送给浏览器的数据
    response =  response + file_name
    new_socket.send(response.encode("utf-8"))
    #3.关闭套接字
    new_socket.close()
def main():
    '''用来完成整体的控制'''
    #1.创建套接字
    tcp_server_socket = socket(AF_INET, SOCK_STREAM)
    # 2.绑定本地信息
    port = 7777
    address = ('', port)
    tcp_server_socket.bind(address)
    # 3.变为监听,将主动套接字变为被动套接字
    tcp_server_socket.listen(128)
    #等待连接
    while True:
        client_socket, clientAddr = tcp_server_socket.accept()
        # 接收对方发送过来的数据
        service_client(client_socket)
    # 关闭监听套接字
    tcp_server_socket.close()
if __name__ == "__main__":
    main()
关于作者
个人博客网站
个人GitHub地址
个人公众号:
Web服务器-服务器开发-返回浏览器需要的页面 (3.3.2)的更多相关文章
- 【Web网站服务器开发】Apache 和 Tomcat的区别及配置
		
Apache 和 Tomcat 都是web网络服务器,两者既有联系又有区别,在进行HTML.PHP.JSP.Perl等开发过程中,需要准确掌握其各自特点,选择最佳的服务器配置. apache是web服 ...
 - Web服务器具体开发流程
		
下面是我个人对Web服务器开发流程的一点理解,下面做出了大概的模型,实现了基本的功能,下面也有所有的代码可以提供参考: 一开始学的时候不要把网站想的太复杂了,把网站的流程和大概的原理框架搞清楚,在通过 ...
 - 如何用Baas快速在腾讯云上开发小程序-系列1:搭建API & WEB WebSocket 服务器
		
版权声明:本文由贺嘉 原创文章,转载请注明出处: 文章原文链接:https://www.qcloud.com/community/article/221059001487422606 来源:腾云阁 h ...
 - 【Web网站服务器开发】apache和tomcat 阿帕奇和汤姆猫
		
经常在用apache和tomcat等这些服务器,可是总感觉还是不清楚他们之间有什么关系,在用tomcat的时候总出现apache,总感到迷惑,到底谁是主谁是次,因此特意在网上查询了一些这方面的资料,总 ...
 - 嵌入式Linux的web视频服务器的构建
		
http://blog.sina.com.cn/s/blog_53d02d550102v8bu.html随着嵌入式处理器和开源Linux 的广泛应用,各种视频服务在嵌入式系统中逐渐发展起来. 1.引言 ...
 - 移动web开发介绍——浏览器
		
前段时间了解学习了一下<移动Web手册>,觉得真的需要这种不是偏向技术.框架或工具的书籍,只是单纯的讲解一些关于移动Web最基本的知识.正好今天整理一部分之前学习过的内容,记录和分享,也方 ...
 - web server服务器
		
使用最多的 web server服务器软件有两个:微软的信息服务器(iis),和Apache. 通俗的讲,Web服务器传送(serves)页面使浏览器可以浏览,然而应用程序服务器提供的是客户端应用程序 ...
 - Cookie 路径在本机测试及服务器部署,在浏览器处理方式上的不同
		
Table of Contents 1 问题场景 2 解决过程 2.1 cookie是否设置成功 2.2 cookie是否上传到服务器 3 总结 1 问题场景 最近在学用Python进行web开发,写 ...
 - Web静态服务器
		
Web静态服务器 编程微刊 Web静态服务器-1-显示固定的页面 #coding=utf-8 import socket def handle_client(client_socket): " ...
 
随机推荐
- 详细了解IDM的队列功能
			
队列的种类 IDM(Internet Download Manager)下载器的队列分为2种:主要下载队列和同步队列.此外,我们也可以自己创建附加队列. 在左边的[分类]窗口中,黄色的图标为主要下载队 ...
 - Sound Forge批量转换音频格式,实现高效编辑音频
			
Sound Forge的批量处理功能可以实现批量格式转换.批量添加效果等功能,让用户可以在处理其他音频编辑任务的同时,自动完成格式转换.效果添加等重复性任务.接下来,一起来看看如何借助批处理转换器实现 ...
 - 两款超好用的Mac读写ntfs软件推荐给大家
			
活中我们免不了会使用一些硬盘设备来存储文件或者是数据,然而绝大多数的移动硬盘都是ntfs格式.Mac读写ntfs软件有很多,究竟哪一款适合我们? 首先,我们一起了解一下什么是ntfs格式.ntfs,是 ...
 - Centos7安装vscode
			
CentOS7 安装vscode 最近在Linux环境下写几个程序时发现用vim时总出现一点问题,配置了vim也还是不太习惯,因此就安装了vs ...
 - dubbo与zk
			
一.总体流程: 1.服务提供者启动时,会向注册中心写入自己的元数据信息,同时会订阅配置元数据信息: 2.消费者启动时,也会向注册中心写入自己的元数据信息,并订阅服务提供者.路由和配置元数据信息: 3. ...
 - CSS色调旋转滤镜
			
一 关于filter 首先看一下官方对于CSS的filter属性的定义: CSS属性将模糊或颜色偏移等图形效果应用于元素.滤镜通常用于调整图像,背景和边框的渲染. 本文主要讲的是filter中的一个属 ...
 - java中的强引用(Strong reference),软引用(SoftReference),弱引用(WeakReference),虚引用(PhantomReference)
			
之前在看深入理解Java虚拟机一书中第一次接触相关名词,但是并不理解,只知道Object obj = new Object()类似这种操作的时候,obj就是强引用.强引用不会被gc回收直到gc roo ...
 - java47
			
1. 1.List集合根据角标获取元素 import java.util.ArrayList; import java.util.List; public class List集合 { @Suppre ...
 - 解决IDEA更新为最新的2020.3版后,右键运行居然没有以xml形式运行的Run显示
			
一.前言 个人一直喜欢用IDEA最新版,结果更新后,发现TestNg批量执行,选中testng.xml右键没Run,如下图: 刚开始以为是配置错误呢,下载了2018.2版本的IDEA,还能正常运行,于 ...
 - 第10章 Python的模块和包
			
前面几章介绍的Python基础知识,相关案例都是以单源代码文件为例来说明的,这种单源代码文件在Python中就是模块,每个模块文件都可以被其他应用导入,Python正是通过模块导入技术来实现很灵活的功 ...