主要使用python实现了一个http服务器。http服务器实现了用户的注册和登录的简单功能,当然还可以继续扩展。

数据的存储使用的是文件,有兴趣的话可以使用数据库进行存储。当然根据个人兴趣而定。

本记录主要是为了自己后面进行查阅,并给有需要的人提供方便,抛砖引玉。如果浪费了大家的时间也请多多关照。

  1. 进程启动代码
 from ChttpServer import CHttpServer
def main():
http_server = CHttpServer.CHttpServer()
http_server.bind(8000)
http_server.start() if __name__ == "__main__":
main()

  2.http服务器实现类

 import socket
import sys
import re
from multiprocessing import Process
class CHttpServer(object):
"""Httpserver服务端类"""
def __init__(self):
self.m_serverSocket = socket.socket(socket.AF_INET,socket.SOCK_STREAM)
self.m_serverSocket.setsockopt(socket.SOL_SOCKET,socket.SO_REUSEADDR,1)
def start(self):
self.m_serverSocket.listen(128)
while(True):
m_clientSocket,m_clientAddr = self.m_serverSocket.accept()
print('[%s,%s]用户连接上了服务器' % m_clientAddr)
handle_client_process = Process(target = self.handle_client,args=(m_clientSocket,))
handle_client_process.start()
m_clientSocket.close()
#数据处理进程
def handle_client(self,clientSocket):
'''
处理客户请求操作
'''
#获取客户请求数据
request_data = clientSocket.recv(1024)
#print('接收到的数据:%s' % request_data)
request_lines=request_data.splitlines()
#print(len(request_lines))
strlist=[]
for line in request_lines:
strlist=str(line).split('&')
if len(strlist) > 1:
break
#print(strlist[1:5])
userinfolist = strlist[1:3]
user_info='&'.join(userinfolist)
#print(userinfolist)
#用户名&密码&操作类型&来源
#解析请求报文
'''
报文协议格式:clientparam=&username&pwd&method&type&.
type:0 注册 1登录
'''
file_data=''
response_body=''
response=''
response_start_line = "HTTP/1.1 200 OK\r\n"
response_headers = "Server: My server\r\n"
if strlist[3]=='':#注册
"""写注册文件"""
fp = open('userinfo.txt','a+') fp.write(user_info)
fp.write('\n')
fp.close()
file_data=r'<b>恭喜您,注册成功:'+ (strlist[1]+'</b>')
response_body = file_data
response = response_start_line + response_headers + "\r\n" + response_body
elif strlist[3]=='': #登录
"""登录系统"""
fp = open('userinfo.txt','r')
for line in fp.readlines():
if line.replace('\n','') == user_info.replace('\n',''):
#print(user_info)
file_data=r'<b>恭喜您,登录成功:'+ (strlist[1]+'</b>')
response_body = file_data
response = response_start_line + response_headers + "\r\n" + response_body
break
# 向客户端返回 响应数据
fp.close()
elif strlist[3]=='': #重置密码
pass
else:
file_data=r'非法操作'
response_body = file_data
response = response_start_line + response_headers + "\r\n" + response_body
print('发送的数据[%s]' % response)
clientSocket.send(bytes(response, "gbk"))
#组装返回包
def start_response(self,status,headers):
response_headers = "HTTP/1.1 " + status + "\r\n"
for header in headers:
response_headers += "%s: %s\r\n" % header
self.response_headers = response_headers
#绑定端口
def bind(self,port):
self.m_serverSocket.bind(('',port))
def parseline(self,strcon):
"""解析字符串"""
pass

3、运行情况

测试命令:http://127.0.0.1:8000/&jifei&123456&2&0&

使用python实现http服务器的更多相关文章

  1. Python 创建本地服务器环境生成二维码

    一. 需求 公司要做一个H5手机端适配页面,因技术问题所以H5是外包的,每次前端给我们源码,我们把源码传到服务器让其他人访问看是否存在bug,这个不是很麻烦吗?有人说,可以让前端在他们的服务器上先托管 ...

  2. python实现websocket服务器,可以在web实时显示远程服务器日志

    一.开始的话 使用python简单的实现websocket服务器,可以在浏览器上实时显示远程服务器的日志信息. 之前做了一个web版的发布系统,但没实现在线看日志,每次发布版本后,都需要登录到服务器上 ...

  3. Python搭建Web服务器,与Ajax交互,接收处理Get和Post请求的简易结构

    用python搭建web服务器,与ajax交互,接收处理Get和Post请求:简单实用,没有用框架,适用于简单需求,更多功能可进行扩展. python有自带模块BaseHTTPServer.CGIHT ...

  4. python使用qq服务器发送邮件

    python使用qq服务器发送邮件 直接上代码: #!/usr/bin/python2.7 #-*- coding: UTF-8 -*- # sendmail.py # # init created: ...

  5. [源码]Python简易http服务器(内网渗透大文件传输含下载命令)

    Python简易http服务器源码 import SimpleHTTPServerimport SocketServerimport sysPORT = 80if len(sys.argv) != 2 ...

  6. Python 绝技 —— UDP 服务器与客户端

    i春秋作家:wasrehpic 0x00 前言 在上一篇文章「Python 绝技 —— TCP 服务器与客户端」中,介绍了传输层的核心协议 TCP ,并运用 Python 脚本的 socket 模块演 ...

  7. python搭建简易服务器实例参考

    有关python搭建简易服务器的方法. 需求分析: 省油宝用户数 已经破了6000,原有的静态报表 已经变得臃肿不堪, 每次打开都要缓上半天,甚至浏览器直接挂掉 采用python搭建一个最最简易的 w ...

  8. python搭建本地服务器

    python搭建本地服务器 python3以上版本 'python3 -m http.server 8000' 默认是8000端口,可以指定端口,打开浏览器输入http://127.0.0.1:800 ...

  9. Python web 简单服务器的搭建与运行

    搭建python的CGI环境: 假设在/var/www/cgi-bin下建立一个hello.py的文件 在ubuntu下打开终端 然后用命令 cd /var/www/ 进入后执行命令 : python ...

  10. [容器]python搭建简易服务器+docker导入多个镜像shell脚本

    从其他机器导出来的docker镜像,集中地放在某台上,其他的机器执行 curl xxx:8000/load_images.sh 来导入镜像,简单方便 使用python简易web服务器. (在镜像目录下 ...

随机推荐

  1. Xshell和Xftp 安装及使用

    Xshell Xshell 是一个强大的安全终端模拟软件,它支持SSH1, SSH2, 以及Microsoft Windows 平台的TELNET 协议.Xshell 通过互联网到远程主机的安全连接以 ...

  2. 重置root密码!

    偶尔把密码忘记了也不用慌,重置密码只需简单几步: 第1步:开机后在内核上敲击“e”. 第2步:在linux16这行的后面输入“rd.break”并敲击“ctrl+x“. 第3步:进入到了系统的紧急求援 ...

  3. 利用Python获取统计自己的qq群成员信息

    利用python获取自己的qq群成员信息! 首先说明一下需要使用的工具以及技术:python3 + selenium selenium安装方法:pip install selenium 前提:获取自己 ...

  4. Docker(二) Dockerfile 使用介绍

    前言 图解Docker 镜像.容器和 Dockerfile 的关系: 一.Dockerfile的概念 Docker 镜像是一个特殊的文件系统,除了提供容器运行时所需的程序.库.资源.配置等文件外,还包 ...

  5. Springboot 自动配置浅析

    Introduction 我们知道,SpringBoot之所以强大,就是因为他提供了各种默认的配置,可以让我们在集成各个组件的时候从各种各样的配置文件中解放出来. 拿一个最普通的 web 项目举例.我 ...

  6. Python常用模块之os.path

    os.path.abspath(path) 输入相对路径,返回绝对路径 Python 3.7.0 (v3.7.0:1bf9cc5093, Jun 27 2018, 04:59:51) [MSC v.1 ...

  7. HTML的条件注释和hack技术

    在很多时候,前端的兼容性问题,都很让人头痛!幸运的是,微软从去年声明:从2016年1月12日起,微软将停止为IE8(包括IE8)提供技术支持和安全更新.整个前端圈子都沸腾起来,和今年七月份Adobe宣 ...

  8. Jmeter---第一天配置中文环境、安装jmeter插件

    一:安装就不在赘述,百度有很多优秀的文章.接下来开始我自己的学习笔记 二:设置JMETER,切换中文环境. 首先打开jmeter的安装目录,找到bin文件目录中的jmeter.propertie 打开 ...

  9. PostGIS安装教程

    安装环境: win10专业版 postgresql-10.6-1-windows-x64 ---因为使用的是ArcGIS10.4版本,pg10.6对于ArcGIS10.4版本过高,建议选择安装pg9. ...

  10. 关于Java中2.0-1.1!=0.9的问题

    关于Java中2.0-1.1!=0.9的问题 问题引出: 在<Java核心技术>中关于浮点数值计算部分提到,System.out.println(2.0-1.1)这条语句并不是想当然的0. ...