用python写一个简单的web服务器

人生苦短,我用python

简洁高效,这才是理想的语言啊

分享一点python的学习经验-----如何用python写一个简单的web服务器

首先,我们需要简单地了解一下网络通信协议,这里用白话介绍一下TCP和UDP这两种传输层的协议

TCP:通信过程之中每次通信都会进行确认操作,确保报文的安全送达,相当于用对讲机说话,web服务器和客户端就是此采用此协议。

UDP:通信之中不需要确认操作,只完成报文的单项传输,相当于写信,DNS服务器与客户端的通信就是采用此协议。

再要了解一个网络编程中的概念,就是socket套接字,socket用于建立一个网络链接,创建套接字需要指定使用的协议和目标主机的ip和端口号,端口号计算机中通信过程中用于标记应用程序的一个序号,每个运行中的程序都会占用至少一个端口号

下面代码

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和你浏览器的端口组成的元组

当然这样我们并不满足,我们需要给浏览器返回一个数据,并显示一些东西

于是我们只需要可以发送相应格式的数据,就可以在浏览器中显示了,而数据格式应该类似于

HTTP\1.1 200 OK\r\n
\r\n #此处应该包括很多参数数据,这里不细讲
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!了

当然这是最简单的一种情形,做个了解足够了。




  • 5
    点赞
  • 36
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值