用python写一个简单的web服务器
人生苦短,我用python
简洁高效,这才是理想的语言啊
分享一点python的学习经验-----如何用python写一个简单的web服务器
首先,我们需要简单地了解一下网络通信协议,这里用白话介绍一下TCP和UDP这两种传输层的协议
TCP:通信过程之中每次通信都会进行确认操作,确保报文的安全送达,相当于用对讲机说话,web服务器和客户端就是此采用此协议。
UDP:通信之中不需要确认操作,只完成报文的单项传输,相当于写信,DNS服务器与客户端的通信就是采用此协议。
再要了解一个网络编程中的概念,就是socket套接字,socket用于建立一个网络链接,创建套接字需要指定使用的协议和目标主机的ip和端口号,端口号计算机中通信过程中用于标记应用程序的一个序号,每个运行中的程序都会占用至少一个端口号
下面代码
[python] view plain copy
import socket
my_ip = '这里填你电脑的ip地址0.0'#可在命令行中输入 ipcongig 查看
s = socket.socket(socket.AF_INET,socket.SOCK_STREAM) #建立一个套接字
s.bind((my_ip,8080))绑定ip与端口 这里端口填的8080
s.listen() #监听。
new_s,adress = s.accept() #这里accep()用于返回一个通信时的套接字和请求主机的地址
print(new_s.recv(1024),'n',adress) #recv()用于接受数据,相应的send()用于发送数据
运行这段代码,然后打开浏览器,在地址栏输入ip:8080格式的地址,然后你就可以看到python程序打印出了两个数据,一是客户端的请求,再就是你的ip和你浏览器的端口组成的元组
当然这样我们并不满足,我们需要给浏览器返回一个数据,并显示一些东西
于是我们只需要可以发送相应格式的数据,就可以在浏览器中显示了,而数据格式应该类似于
HTTP1.1 200 OKrn
rn #此处应该包括很多参数数据,这里不细讲
Hello World!!
然后我们完善代码
mport socket
HOST,PORT = 'your ip',8080
listen_socket = socket.socket(socket.AF_INET,
socket.SOCK_STREAM)
listen_socket.setsockopt(socket.SOL_SOCKET,
socket.SO_REUSEADDR,1)
listen_socket.bind((HOST,PORT))
listen_socket.listen(1)
print('Serving HTTP on port %s ...' % PORT)
while True:
client_connection,client_address = listen_socket.accept()
request = client_connection.recv(1024)
print(request)http_response = b"""
HTTP/1.1 200 OK\r\n
\r\n
Hello,world!
"""
client_connection.send(http_response)
client_connection.close()
打开浏览器,输入ip:8080
就可以在网页上看到 Hello,World!了
当然这是最简单的一种情形,做个了解足够了。
用python写一个简单的web服务器相关推荐
- ipad php mysql_如何用PHP/MySQL为 iOS App 写一个简单的web服务器(译) PART1
原文:http://www.raywenderlich.com/2941/how-to-write-a-simple-phpmysql-web-service-for-an-ios-app 作为一个i ...
- ios php mysql实例_如何用PHP/MySQL为 iOS App 写一个简单的web服务器(译) PART1
原文:http://www.raywenderlich.com/2941/how-to-write-a-simple-phpmysql-web-service-for-an-ios-app 作为一个i ...
- 如何用PHP/MySQL为 iOS App 写一个简单的web服务器(译) PART1
原文:http://www.raywenderlich.com/2941/how-to-write-a-simple-phpmysql-web-service-for-an-ios-app 作为一个i ...
- Python写一个简易的web服务器
Greg Wilson是Software Carpentry(为科学家和工程师提供在计算技能方面的速成课程)的创始人.他已经在学术界和工业界工作了30年,是几本计算方面的书,包括获得2008年jolt ...
- web服务器python_一个简单的web服务器(python)
今天用python写一个简单的web服务器代码网上都有只是为了方便大家学习做了一个简单的教程 第一首先我们来一张架构以及运行过程的流程图 本文学习仅供参考,需要更多资料可以加群:496257369 简 ...
- 用Python建立最简单的web服务器
用Python建立最简单的web服务器 利用Python自带的包可以建立简单的web服务器.在DOS里cd到准备做服务器根目录的路径下,输入命令: python -m Web服务器模块 [端口号,默认 ...
- python实现一个简单的http服务器
需求:用python实现一个简单的http服务器 网页源码文件:https://download.csdn.net/download/d1240673769/46963534 该文件为html文件,如 ...
- python爬虫抢火车票_如何用python写一个简单的12306抢票软件|python 爬火车票 教程...
python 如果抓取验证码图片 类似12306的登录验证码图片 这个以前做次.最大的麻烦是码的识别算法的识别率太低.12306那种网站登陆错3次就限制你20分钟.所以除非你有33%以上的识别率否则不 ...
- 我的Go语言学习之旅八:创建一个简单的WEB服务器
因为一直在做WEB程序,所以更关注WEB界的发展,这里就用GO做了一个简单的WEB服务器,直接看例子吧 package main import ( "fmt" "net/ ...
最新文章
- linux 套接字选项定义
- vant 项目_如何搭建mpvue框架搭配vant组件库的小程序项目
- git 拉去代码要求密码 解决方法:生成gitLab公钥
- 在visualstudio中使用Qt
- Salesforce中所有常用类型字段的取值与赋值
- Oracle 外连接和 (+)号的用法
- NOR和NAND Flash存储器的区别
- rabbitmq-死信队列
- 转:C++中const、volatile、mutable的用法
- c盘users的用户名怎么改_做完这几个操作,我从C盘中清理了30G垃圾文件
- Vue框架里使用Swiper - 安装篇
- hp服务器增加raid卡,惠普ProLiant服务器Raid卡配置过程详解
- OpenGL ES 2 o 初探
- c语言控制倒车雷达系统,倒车雷达控制系统设计
- 背景图片的位置(HTML、CSS)
- juqery合成事件toggle方法
- MySQL 8.0 的 5 个新特性,太实用了!
- word向下箭头符替换和打印,去掉多余换行
- 随笔之---java版本哲学家就餐问题【信号量的实现】
- 新知实验室--腾讯云TRTC体验
热门文章
- 推荐系列:2008年第10期 总12期
- python: 基本的日期与时间转换
- AI考拉技术分享会--IDE 常用功能 for Node.js
- 一朵落地中国的“智能云”是如何飘到你身边的!
- 微软想证明Windows比Chrome好 主要源自恐惧?
- 析构函数无法命中断点. 当前无法命中断点: 没有与此行关联的调试程序的目标代码类型的可执行代码. 可能的原因包括;条件编译, 编译器优化或者......
- 【javascript闭包】转载一篇不错的解释,也有几个大牛的链接
- Android HAL 开发 (2)
- Pow(x, n) 求一个数的n次方
- android中include标签的使用