本文使用socket实现,先看下效果
在浏览器访问

使用python访问


下面,我们开始讲解实现方法

import socket# 1. 创建套接字并设置服务器释放
web_server= socket.socket(socket.AF_INET, socket.SOCK_STREAM,socket.IPPROTO_TCP)
.web_server.setsockopt(socket.SOL_SOCKET,socket.SO_REUSEADDR,1)
# 2. 绑定端口
web_server.bind(("127.0.0.1", 26332))
# 3. 监听套接字
web_serve.listen(128)

第一步:我们首先创建一个套接字,第一行,套接字的参数有3个,这里不具体讲解,只要将代码复制过去就可以了。第二行涉及到TCP3次握手和4次挥手,只要知道,当我们服务器主动发起关闭客户端连接时,或者意外中断后,端口不会被占用。
第二步:绑定端口,为什么要绑定端口,因为你只有绑定端口别人才能知道如何找到你。
如果是在本地运行,就绑定127.0.0.1,端口号可以随意输入
如果是在远程服务器,就输入远程服务器的IP地址。同时把安全规则把对应端口开放。
第三步:我们绑定端口以后,就要监听端口,如果不监听端口,就无法知道有人连接你了。

while True:web_client,client_ip=web_serve.accept()

第四步:当我们绑定好端口以后,我们就要开始等待客户端连接。如果客户端连接,它才会进行下一步,如果没有连接,它会阻塞在这一步。

import multiprocessing
process=multiprocessing.Process(target=web_requests,args=(web_client,))
process.start()
web_client.close()

第五步:当我们接收到客户端连接后,我们就要为这个客户端创建一个进程,去为它服务,因为进程是复制一份web_client,所以我们就可以把程序所指向的web_client给关了(进程所指向的由进程关闭),循环等待下一个客户端连接

def web_requests(web_client):web_requests=web_client.recv(1024).decode("utf-8")

定义一个进程函数,然后接收客户端发来的数据,web_client.recv(1024)中recv(1024)是接收客户端发来的数据,.decode(“utf-8”)是对客户端发来的数据进行解码

import re
web_request=web_requests.splitlines()[0]    #将收到的数据转为列表,取出第一行参数:GET /s?kw=hello,word HTTP/1.1
request_kw=re.findall("kw=(.*?).HTTP",web_request) [0]  #取出收到的参数

我们在爬取百度的时候,经常会用到wd=,&pn=,所以在这里,我们也使用传参的方式kw=,让服务器收到我们的请求,并返回传入的参数值,当我们收到请求时,我门就要开始返回数据

response_head="HTTP/1.1 200 OK\r\n\r\n".encode("utf8") #返回head
response_body=request_kw.encode("utf8")   #返回body

返回数据分为head和body,这里要着重说明,在浏览器中,返回的head是不显示在页面的,可以通过f12去查看我们返回的head,在python中,我们用requests获取内容,默认不会返回head部分

body是我们返回的主体,可以是url,也可以文件,但注意,一定要转为二进制

web_client.send(response_head)
web_client.send(response_body)

然后,我们使用send函数返回客户端head和body,这时,客户端就可以接收到我们发送的数据了。
一定要记住,web_client.recv()接收客户端请求数据,web_client.send()返回给客户端数据,最后不要忘了编码和解码

web_client.close()

返回客户端数据以后,我们将进程中的连接关闭。
以上是全部代码,大家把所有代码复制,直接运行就可以了,这里给大家出个题目,如果设置需要验证密码,如果客户端传入密码正确,就返回数据,不正确,就返回密码错误

如何用python创建最简单的服务器相关推荐

  1. python批量下载文件只有1kb_详解如何用python实现一个简单下载器的服务端和客户端...

    话不多说,先看代码: 客户端: import socket def main(): #creat: download_client=socket.socket(socket.AF_INET,socke ...

  2. python爬虫图片-如何用Python来制作简单的爬虫,爬取到你想要的图片

    原标题:如何用Python来制作简单的爬虫,爬取到你想要的图片 在我们日常上网浏览网页的时候,经常会看到一些好看的图片,我们就希望把这些图片保存下载,或者用户用来做桌面壁纸,或者用来做设计的素材. 我 ...

  3. python爬虫抢火车票_如何用python写一个简单的12306抢票软件|python 爬火车票 教程...

    python 如果抓取验证码图片 类似12306的登录验证码图片 这个以前做次.最大的麻烦是码的识别算法的识别率太低.12306那种网站登陆错3次就限制你20分钟.所以除非你有33%以上的识别率否则不 ...

  4. 如何用python创建一个下载网站-使用Python下载文件的简单示例

    Python部落(python.freelycode.com)组织翻译,禁止转载,欢迎转发. 学习如何使用各种Python模块从web下载文件 在本教程中,你将学习如何使用不同的Python模块从we ...

  5. 怎样用python搭建简单的系统_如何用Python搭建一个简单的推荐系统?

    推荐系统的相关知识我们已在前文中提到,在这篇文章中,我们会介绍如何用Python来搭建一个简单的推荐系统. 本文使用的数据集是MovieLens数据集,该数据集由明尼苏达大学的Grouplens研究小 ...

  6. python旅游推荐系统_如何用Python搭建一个简单的推荐系统?

    推荐系统的相关知识我们已在前文中提到,在这篇文章中,我们会介绍如何用Python来搭建一个简单的推荐系统. 本文使用的数据集是MovieLens数据集,该数据集由明尼苏达大学的Grouplens研究小 ...

  7. 国外大牛教你,如何用Python开发一个简单的区块链数据结构| 建议收藏

    来源 | Medium 作者 | arjuna sky kok 整理 / Aholiab 出品 | 区块链大本营(blockchain_camp) 根据IEEE此前的一项调查,Python已成为最受开 ...

  8. 怎么用python创建文件-如何用Python创建生成xml文档文件的方法

    用如何用Python完成创建生成xml文档文件的工作. 需要用到的方法:from xml.dom.minidom import Document,想必大家很熟悉这个操作了,接下来就用python 创建 ...

  9. 【Python】如何用python做一个简单的输入输出交互界面?

    看到知乎上有人在问,如何使用Python做一个简单的输入输出交互界面? 交互界面就涉及到GUI编程. Python有很多GUI框架,功能大同小异. 其中比较出名的有「PyQT」.**wxPython. ...

最新文章

  1. 二、OCR训练时,将txt文件和图片数据转为lmdb文件格式
  2. 第一篇:UnicodeDecodeError: ‘utf-8‘ codec can‘t decode byte 0xc3 in position 0: invalid continuation byt
  3. win10 无法安装/启用 .net framework 3.5 的一种解决方案
  4. day01 python基础笔记
  5. PU learning学习笔记
  6. 让 fork 出来的 Github 仓库从远端仓库拖取最新的修改
  7. Spring Cloud Alibaba——Nacos实现服务治理
  8. java vo对象转bo对象_java的几种对象(PO,VO,DAO,BO,POJO)解释(转)
  9. 深信服务发布SSL站点
  10. iphone备忘录自带的扫描功能扫完文件后如何保存为图片
  11. 【车牌识别】基于模板匹配算法实现国外车牌识别附matlab源码
  12. android 竖屏优先,android 强制设置横屏 判断是横屏还是竖屏
  13. DES加密解密-java
  14. iOS面试 第三方库
  15. 7-2 前n项的和2 (10 分)
  16. matlab RFID解码,UHF RFID编码之TPP编码
  17. 【巷子】---flux---【react】
  18. Javascrit通过百度地图API获取客户端IP、地址
  19. 16款最佳HTML5超酷动画演示及源码
  20. Android6.0动态壁纸,M Launcher下载-M桌面-安卓6.0桌面 v1.4.3_手机乐园

热门文章

  1. AcWing 1170 排队布局
  2. Java基础练习题2
  3. html怎么给图片加页码,在Word里,怎样让页码显示在插入的图片上?
  4. Visual Basic 6.0编写简单网页浏览器
  5. AndroidStudio0.5.5发布
  6. 维基解密:攻击 Mac/Linux 的CIA三款工具
  7. CentOS下用命令查看IP地址
  8. 搜索引擎的小技巧【可以组合起来使用】:
  9. 【Python】写了一个简单的照片按EXIF日期保存脚本
  10. Unity3D开发之折线图制作