面向对象的服务器封装 | 学习笔记

简介: 快速学习 面向对象的服务器封装

开发者学堂课程【Python入门 2020年版面向对象的服务器封装】学习笔记,与课程紧密联系,让用户快速学习知识。

课程地址:https://developer.aliyun.com/learning/course/639/detail/10481


面向对象的服务器封装


用面向对象的服务器分装的方法编写代码

import socket

class MyServer(object):

def_init_(self,ip,port):

self.socket= socket.socket(socket.AF_INET,socket.SOCK_STREAM)

self.socket.bind((ip,port))

self.socket.listen(128)

def run_forever:

while True

client_socket,client_addr=self.socket.accept()

data=client_socket.recv(1024).decode(‘utf8 )

path=’ ’

if data:

path=data.splitlines()[0].split(‘ ’)[1]

print(‘请求的路径是{}.format(path))

response_body=’hello world

response_ header = 'HTTP/1.1 200 OK\n'

if path == /login' :

response_ body = '欢迎来到登录页面'

elif path == '/register':

response_ body ='欢迎来到注册页面'

elif path == '/':

response_ body ='欢迎来到首页'

else:

response_ header = 'HTTP/1.1 404 Page Not Found\n' #响应头写完要换行,注意“\n

response_ body = '对不起,您要查看的页面不存在!!!'

response_ header += 'content-type:text/html ; charset=utf8\n

response_ header +=’\n

response=response_header+response_body

client_ socket.send(response .encode('utf8'))

server=MyServer(‘0.0.0.0,9090)

现在相当于有两个代码,我创建了一个 MyServer 这样一个 Server 对象,里面有一个 run_forver 方法来运行这个代码。

然后再加上 server.run_forever(),把刚才的一堆代码变成面向对象的函数。

import socket

class MyServer(object):

def_init_(self,ip,port):

self.socket= socket.socket(socket.AF_INET,socket.SOCK_STREAM)

self.socket.bind((ip,port))

self.socket.listen(128)

def run_forever:

while True

client_socket,client_addr=self.socket.accept()

data=client_socket.recv(1024).decode(‘utf8 )

path=’ ’

if data:

path=data.splitlines()[0].split(‘ ’)[1]

print(‘请求的路径是{}.format(path))

response_body=’hello world

response_ header = 'HTTP/1.1 200 OK\n'

if path == /login' :

response_ body = '欢迎来到登录页面'

elif path == '/register':

response_ body ='欢迎来到注册页面'

elif path == '/':

response_ body ='欢迎来到首页'

else:

response_ header = 'HTTP/1.1 404 Page Not Found\n'

response_ body = '对不起,您要查看的页面不存在!!!'

response_ header += 'content-type:text/html ; charset=utf8\n

response_ header +=’\n

response=response_header+response_body

client_ socket.send(response .encode('utf8'))

server=MyServer(0.0.0.0,9090)

server.run_forever()

这个就是把之前的一堆代码分装成对象,这个对象在创建的时候,需要一个 ip 地址和端口号,然后我把这个 socket创建给到这个对象,之后绑定端口号然后 listenrun_forever 就是不断监听,现在运行后访问 localhost:9090显示“欢迎来到首页”。

服务器是一个死循环,不断处理请求,请求路径和打印请求路径可以删掉了,这就是使用面向对象的方法,自己写了一个服务器,还是很厉害的。

相关文章
|
Ubuntu IDE Java
Qt+QtWebApp开发笔记(一):QtWebApp介绍、下载和搭建基础封装http轻量级服务器Demo
在arm上做了Qt的应用程序,为了在局域网实现web页的访问方式来配置arm上Qt的程序,局域网轻量级http服务器是很好的实现方式之一,有机会做国产麒麟上Qt的http服务器,正好接触到了QtWebApp可以实现。   本篇实战解说QtWebApp的轻量级Demo。   本篇篇幅较长,为了保持基础的完整性将必要的东西都放在本篇。
|
存储 设计模式 Linux
epoll高度封装reactor,几乎所有可见服务器的底层框架
epoll高度封装reactor,几乎所有可见服务器的底层框架
epoll高度封装reactor,几乎所有可见服务器的底层框架
|
JavaScript 前端开发
Node.js 创建并封装静态 WEB 服务器
Node.js 创建并封装静态 WEB 服务器
155 0
Node.js 创建并封装静态 WEB 服务器
|
数据挖掘 Java
封装,分用、客户端服务器以及请求响应
封装,分用、客户端服务器以及请求响应
119 0
封装,分用、客户端服务器以及请求响应
|
XML NoSQL 中间件
分布式服务器框架之Server.Common MongoDBClient类封装MongoClient 使用双重检验锁检验初始化单例
MongoClient是连接MongoDB数据库的中间件,在使用MongoClient类之前要从NuGet里面安装MongoDB.Bson、MongoDB.Driver、MongoDB.Driver.Core 三个包后才能使用完整的功能。
|
XML NoSQL Redis
分布式服务器框架之Server.Common封装CSRedisCore实现RedisDBClient 双重检验锁检验初始化CSRedisClient单例
自己封装的RedisDBClient代码量很少,基本原理就是在CSRedisCore的基础上封装了一层,使用xml配置里的RedisConnectString去New了一个CSRedisClient,然后这个Redis客户端交给了RedisHelper.Initialization函数去初始化。
|
网络协议 物联网
STM32封装ESP8266一键配置函数:实现实现AP模式和STA模式切换、服务器与客户端创建
STM32封装ESP8266一键配置函数:实现实现AP模式和STA模式切换、服务器与客户端创建
555 0
STM32封装ESP8266一键配置函数:实现实现AP模式和STA模式切换、服务器与客户端创建
|
中间件
nodeJS+express+mysql模块封装之服务器渲染小demo
nodeJS+express+mysql模块封装之服务器渲染小demo
nodeJS+express+mysql模块封装之服务器渲染小demo
|
移动开发 Python
面向对象封装的web服务器
import socket import re import os import sys # 由于前面太繁琐,可以用类封装一下,也可以分几个模块 class HttpServer(object): def __init__(self,port): # 1、服务器创建负责监听的socket self.
932 0
下一篇
无影云桌面